测试Google搜索页面

时间:2012-03-17 08:39:50

标签: ruby cucumber webrat

我正在学习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)

我该如何解决?

1 个答案:

答案 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"