Cucumber + Capybara测试以确保打开一个新窗口

时间:2012-01-10 16:04:17

标签: ruby-on-rails-3 cucumber capybara

我的功能文件中有以下几行:

Given I have website "www.google.co.uk" 
When I click the website "www.google.co.uk" 
Then "www.google.co.uk" page is opened in a new window

我正在努力寻找一种方法来测试网页是否在新窗口中明确打开。

目前我一直在我的步骤def中使用它:

Then /url "([^"]*)" is opened in new window/ do |url|
  browser = page.driver.browser
  current_id = browser.window_handle
  tab_id = page.driver.find_window(url)
  browser.switch_to.window tab_id
  page.driver.browser.close
  browser.switch_to.window current_id
end

但是如果网页加载在同一页面上,这仍然会通过测试,如果网页加载在同一个窗口/选项卡上,我希望它失败。

有什么建议吗?

非常感谢

1 个答案:

答案 0 :(得分:7)

我的测试中没有断言。

我的方法是在对链接执行点击操作后测试window_handles数组的大小,因为在点击大小之前应该等于1并且在点击window_handles之后应该等于2.

assert page.driver.browser.window_handles.size == 2

Imho,很好,因为如果网页加载在同一个标​​签中,则大小为1,测试将失败。