为什么水豚代码不适用于 selenium webdriver?
Why capybara codes don't work with selenium webdriver?
我是 Capybara
的新手。我有一个问题,为什么我的 Capybara
在与 Selenium Webdriver
一起使用时不起作用。
这是我的示例代码:
Given(/^I am on the Youtube homepage$/) do
# visit 'http://www.youtube.com'
driver = Selenium::WebDriver.for :firefox
driver.navigate.to('http://www.youtube.com')
end
When(/^I search for "([^"]*)"$/) do |search_term|
fill_in 'search_query', :with => search_term
click_on 'search-btn'
end
Then(/^videos of large rodents are returned$/) do
expect(page).to have_content 'Making Friends with a Capybara'
end
当我 运行 它时,它只是打开 Firefox
并转到 Youtube
主页。但它得到错误:
Capybara::ElementNotFound: Unable to find field "search_query"
。
一切都适用于 visit 'http://www.youtube.com'
命令。
您正在创建一个驱动程序,告诉它导航到一个页面,然后它超出范围,因此被删除。 visit
行之所以有效,是因为它使用的是当前的水豚驱动程序,该驱动程序在测试步骤之间保持不变。与其手动创建驱动程序,不如使用 Capybara 注册驱动程序,然后指定要用于特定测试的驱动程序。参见 drivers
由于 capybara 默认设置了一个用于 firefox 的 selenium 驱动程序,因此您只需
Capybara.default_driver = :selenium
在 运行 测试之前的某处使用 selenium 和 firefox 进行所有测试 运行,或者因为 capybara 将 selenium 注册为默认 javascript 驱动程序,您可以标记任何场景想要在 firefox 中使用 @javascript 运行,如图所示 here
@javascript
Scenario: do something something
Given ...
我是 Capybara
的新手。我有一个问题,为什么我的 Capybara
在与 Selenium Webdriver
一起使用时不起作用。
这是我的示例代码:
Given(/^I am on the Youtube homepage$/) do
# visit 'http://www.youtube.com'
driver = Selenium::WebDriver.for :firefox
driver.navigate.to('http://www.youtube.com')
end
When(/^I search for "([^"]*)"$/) do |search_term|
fill_in 'search_query', :with => search_term
click_on 'search-btn'
end
Then(/^videos of large rodents are returned$/) do
expect(page).to have_content 'Making Friends with a Capybara'
end
当我 运行 它时,它只是打开 Firefox
并转到 Youtube
主页。但它得到错误:
Capybara::ElementNotFound: Unable to find field "search_query"
。
一切都适用于 visit 'http://www.youtube.com'
命令。
您正在创建一个驱动程序,告诉它导航到一个页面,然后它超出范围,因此被删除。 visit
行之所以有效,是因为它使用的是当前的水豚驱动程序,该驱动程序在测试步骤之间保持不变。与其手动创建驱动程序,不如使用 Capybara 注册驱动程序,然后指定要用于特定测试的驱动程序。参见 drivers
由于 capybara 默认设置了一个用于 firefox 的 selenium 驱动程序,因此您只需
Capybara.default_driver = :selenium
在 运行 测试之前的某处使用 selenium 和 firefox 进行所有测试 运行,或者因为 capybara 将 selenium 注册为默认 javascript 驱动程序,您可以标记任何场景想要在 firefox 中使用 @javascript 运行,如图所示 here
@javascript
Scenario: do something something
Given ...