2015-06-16 88 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