我正在学习webrat和黄瓜,并尝试创建简单的例子。这是我的专题文件:
Scenario: Searching for something
Given I have opened "http://www.google.com/"
When I search for "some text"
以下是我的步骤定义:
Given /^I have opened "([^\"]*)"$/ do |url|
visit url
end
When /^I search for "([^\"]*)"$/ do |query|
fill_in "q", :with => query
click_button "Google Search"
end
当我运行测试时,我收到错误消息:
找不到字段:“q”(Webrat :: NotFoundError)
如果我要评论'fill_in'行,我会收到其他错误消息:
无法找到“Google搜索”按钮(Webrat :: NotFoundError)
我该如何解决?
答案 0 :(得分:2)
问题可能是Webrat没有关注从www.google.com重定向到您所在地区的Google网站(for details on redirect)。例如,由于我在加拿大,访问www.google.com会将我重定向到www.google.ca。因此,当我使用Webrat访问www.google.com时,我看到了一个'302 Moved'页面。由于webrat未遵循重定向到搜索页面,因此您无权访问文本字段“q”。
我会尝试使用save_and_open_page
方法检查您最终在哪个页面上结束。您可以运行以下脚本(然后打开它创建的文件)作为快速检查:
require "mechanize"
require 'webrat'
include Webrat::Matchers
include Webrat::Methods
Webrat.configure {|c| c.mode = :mechanize}
begin
visit('http://www.google.com/') #=>
fill_in "q", :with => 'some text'
click_button "Google Search"
rescue
save_and_open_page
end
如果你像我一样在'302 Moved'页面结束,那么你可以在访问后添加以下内容:
click_link "here"