确保使用Capybara / Selenium关闭弹出窗口

时间:2013-12-13 18:14:14

标签: ruby selenium capybara

我正在尝试编写一个打开弹出窗口的水豚规格,然后断言弹出窗口已关闭。

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并对这些更改进行断言)。

我在这里很难过;那里的任何人都知道声称窗口实际关闭的秘诀是什么?

1 个答案:

答案 0 :(得分: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? }