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

Don*_*ono 7 cucumber capybara ruby-on-rails-3

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

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
Run Code Online (Sandbox Code Playgroud)

我正在努力找到一种方法来测试网页是否在新窗口中打开.

目前我一直在我的步骤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
Run Code Online (Sandbox Code Playgroud)

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

有什么建议?

非常感谢

soc*_*ata 7

我看到你的测试没有断言.

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

assert page.driver.browser.window_handles.size == 2
Run Code Online (Sandbox Code Playgroud)

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