2013-12-13 71 views
1

我正試圖寫一個水豚規格打開一個彈出窗口,然後斷言彈出已關閉本身。確保彈出已關閉水豚/硒

visit "/my_page" 

click_button "Open My Popup" 

within_window("MyPopup") do 
    # test things on MyPopup 
end 

sleep 1 # long enough that window.close() has been called in the popup 

# ensure that MyPopup is closed 

事情到目前爲止,我已經試過......

計數的窗口句柄:
page.driver.browser.window_handles.length
這仍然在2彈出關閉

即使作爲this post建議,檢查用於彈出窗口上元素的可見性。這似乎並不奏效。儘管彈出已經關閉,我可以像它仍然存在運行靠在車窗斷言,就像以前一樣:

within_window("MyPopup") do 
    # test things on MyPopup 
end 

我保證window.close從彈出發射(通過添加一些JS在window.close()之後修改彈出窗口的DOM並在這些更改上聲明)。

我在這裏相當難住;那裏的任何人都知道暗示窗戶實際關閉的祕密武器?

回答

0

也許你應該等待你的頁面沒有一些特定的CSS?

它可能看起來像這樣:

def wait_for(timeout = 10) 
    Timeout.timeout(timeout) do 
    loop do 
     break if yield 
    end 
    end 
end 

wait_for { page.first(:css, 'your.specific.css').nil? }