2012-03-17 99 views
0

我正在學習網頁和黃瓜,並試圖創建一個簡單的例子。這是我的特點文件:測試谷歌搜索頁面

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'行我得到其他錯誤消息GE:

找不到按鈕 「谷歌搜索」(Webrat :: NotFoundError)

我怎樣才能解決呢?

回答

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」移動頁面,好像我是在結束了,那麼你可以添加後下面的訪問:

click_link "here"