Проверьте страницу поиска Google - PullRequest
0 голосов
/ 17 марта 2012

Я изучаю вебрат и огурец и пытаюсь создать простой пример.Вот мой файл функций:

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 Ответ

2 голосов
/ 19 марта 2012

Проблема может заключаться в том, что Webrat не выполняет переадресацию с www.google.com на ваш сайт Google, указанный на вашем языке ( для получения подробной информации о перенаправлении ). Например, поскольку я нахожусь в Канаде, переход на сайт 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"
...