2015-06-16 64 views
2

我有框架的主窗口和弹出,我做了一些操作:窗口之间切换与帧

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 

我做错了什么?

我使用水豚2.4.4

+0

确保没有其他框架包裹你的frmFrame2 ......如果是这样,你将不得不您frmFrame1中调用frmFrame2例如......最后确保你正在处理的帧实际上是在windows.last ... – Bodao

+0

问题是,'within_frame(“frmFrame2”)'中的所有操作执行得很好,并且窗口关闭。然后它以某种方式返回到'within_frame(“frmFrame2”)'。 Windows IE弹出窗口中只有1帧。 –

回答

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