Тесты Cucumber + Capybara, чтобы убедиться, что новое окно открыто - PullRequest
7 голосов
/ 10 января 2012

В моем файле функций есть следующие строки:

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 Ответ

7 голосов
/ 11 января 2012

Я не вижу утверждений в вашем тесте.

Мой подход заключается в том, чтобы проверить размер массива window_handles после выполнения действия нажатия на ссылку, поскольку перед щелчком размер должен быть равен 1, а после нажатия window_handles должно равняться 2.

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

Имхо, достаточно хорошо, поскольку, если веб-страница загружается в ту же вкладку, размер будет равен 1, а тест не пройден.

...