用框架在窗户之间切换

时间:2015-06-16 08:53:02

标签: ruby capybara

我有一个带框架的主窗口和一个弹出窗口,我可以在其中执行一些操作:

within_frame("MainFrame") do
  find("btnNewItem").click #opens popup window
end

within_window(windows.last) do
   within_frame("frmFrame2"){
      some_operations
      find("btnOK").click #closes a popup
     }
end

within_window(switch_to_window(windows.first)) do
  within_frame("MainFrame") do
     find("btnDeleteItem").click #deletes item
     accept_popup_dialog
  end
end

但是当操作在弹出窗口中完成并且关闭时,我收到一个错误:

Failure/Error: within_frame("frmFrame2"){
     Selenium::WebDriver::Error::NoSuchWindowError:
       Window is closed

我做错了什么?

我使用Capybara 2.4.4

1 个答案:

答案 0 :(得分:1)

尝试切换回父框架时,within_frame方法发生异常。

这似乎是一个错误,所以最好的办法是将其作为Capybara project中的问题提出。

与此同时,最快的解决方案是拯救/忽略例外:

within_frame("MainFrame") do
  find("btnNewItem").click #opens popup window
end

within_window(windows.last) do
  within_frame("frmFrame2"){
    some_operations
    find("btnOK").click #closes a popup
  } rescue Selenium::WebDriver::Error::NoSuchWindowError # Add a rescue here
end

within_window(switch_to_window(windows.first)) do
  within_frame("MainFrame") do
    find("btnDeleteItem").click #deletes item
    accept_popup_dialog
  end
end