为什么水豚代码不能与selenium webdriver一起使用?

时间:2015-11-04 11:06:58

标签: ruby selenium-webdriver capybara

我是Capybara的新手。我对CapybaraSelenium 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'

一切都适用于web.config命令。

1 个答案:

答案 0 :(得分:1)

你正在创建一个驱动程序,告诉它导航到一个页面然后它超出了范围,所以它被删除了。 visit行有效,因为它使用当前的capybara驱动程序,它在测试步骤之间保持不变。不是手动创建驱动程序,而是应该向Capybara注册驱动程序,然后指定用于特定测试的驱动程序。见drivers

由于capybara默认设置一个selenium驱动程序用于firefox你可以做到

Capybara.default_driver = :selenium

在运行测试之前的某个地方使用selenium和firefox运行所有测试,或者因为capybara将selenium注册为默认的javascript驱动程序,您可以使用@javascript标记要在firefox中运行的任何场景here

@javascript
Scenario: do something something
Given ...