水豚 - 闹鬼和硒

Capybara - Poltergeist and Selenium

我正在使用 Cucumber 进行 运行 测试,我同时使用 PhantomJS (poltergeist) 和 Selenium WebDriver。我的一项测试是从超链接重定向到新的 window。

有没有一种方法可以写入我的步骤定义以导航到 window 说:如果使用 Poltergeist,运行 这行代码 else 运行 这行(默认为硒)?:

示例:

在 Selenium 浏览器中时:

within_window(->{ page.title == 'Title' }) do
  expect(current_url).to eq('URL')
  page.driver.browser.close
end

在恶作剧中时:

new_window = window_opened_by { click_link 'Something' }
within_window new_window do
  # code
end

您可以根据 Capybara.current_driver

的值设置条件
if Capybara.current_driver == :selenium
   do the selenium things
else
   do the poltergeist things
end

我成功了,但我没有正确实现 Poltergeist 的代码。我的代码是:

if Capybara.default_driver == :selenium
  within_window(->{ page.title == 'TITLE' }) do
    expect(current_url).to eq('URL')
    page.driver.browser.close
  end
else
  sleep 1
  new_window = page.driver.browser.window_handles.last
  within_window new_window do
    expect(current_url).to eq('URL')
  end
end

非常感谢 Tom Walpole,非常感谢您的帮助