在 windows 与框架之间切换

Switch between windows with frames

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

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

但是当在弹出 window 中完成操作并关闭时,我得到一个错误:

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

我做错了什么?

我用的是水豚 2.4.4

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

这似乎是一个错误,所以最好的办法是在 Capybara project.

中将其作为问题提出

同时,最快的解决方案是 rescue/ignore 异常:

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