Проверка значений с огурцом и Watir - PullRequest
0 голосов
/ 02 апреля 2012

Я пытался начать с огурца и Watir.Я сделал установку и написал / скопировал простую «функцию».Однако я нигде не проверяю, что находится на странице.

Эта моя функция:

Функция: Поиск в Google Чтобы люди могли найти мою документацию, я хочу проверить ееуказан на первой странице в Google

Scenario: Searching for JS.Class docs
  Given I have opened "http://www.google.com/"
  When I search for "JS.Class"
  Then I should see a link to "http://jsclass.jcoglan.com/" with text "JS.Class v3.0"

Мой файл env.rb выглядит следующим образом

require 'watir'
require 'rspec'

И это мой search_steps.rb

@ie

Given /^I have opened "([^\"]*)"$/ do |url|
    @ie = Watir::IE.new
    @ie.goto(url)
end

When /^I search for "([^\"]*)"$/ do |arg1|
    @ie.text_field(:name, "q").set(arg1)
    @ie.button(:name, "btnG").click
end

Then /^I should see a link to "([^\"]*)" with text "([^\"]*)"$/ do |arg1, text|
    puts arg1

    # @ie.text.should include(arg1)
    @ie.close
end

Когда я раскомментирую строку'@ie.text.should include (arg1) ', я получаю эту ошибку.

Then I should see a link to "http://jsclass.jcoglan.com/" with text "JS.Class v3.0" # features/step_definitions/search_steps.rb:13
  true
  undefined method `split' for ["http://jsclass.jcoglan.com/"]:Array (NoMethodError)
  ./features/step_definitions/search_steps.rb:17:in `/^I should see a link to "([^\"]*)" with text "([^\"]*)"$/'

  features\search.feature:8:in `Then I should see a link to "http://jsclass.jcoglan.com/" with text "JS.Class v3.0"'

Сценарии сбоя: cucumber features \ search.feature: 5 # Сценарий: Поиск JS.Класс docs

Сейчас функция Then не выполняет свою работу.Если я закомментирую строку, то все, что она на самом деле делает, это пишет какой-то текст.

У меня есть следующие драгоценные камни: огурец <1.1.9>, rspec <2.9.0>, watir <2.0.4>и watir-webdriver <0.5.3>

У меня есть версия ruby: ruby ​​1.9.3p125.

Я использую это на Windows 7 Ultimate.

Мне интересно, если я пропускаю драгоценный камень или что-то.Чтение сообщения подразумевает, что я вызываю метод, который он не может найти, но я нашел немало страниц в Интернете, которые используют этот метод.

Любая помощь, руководство или указатели в правильном направлениис благодарностью приветствуем.

1 Ответ

2 голосов
/ 02 апреля 2012

Проблема в том, что если вы (вручную) посмотрите текст результатов поиска Google, вы заметите, что текста нет "http://jsclass.jcoglan.com/". Так что, как и следовало ожидать, тест не пройден.

Чтобы исправить это, вы можете исправить вызов шага, удалив 'http://':

Then I should see a link to "jsclass.jcoglan.com/" with text "JS.Class v3.0"

. Тем не менее, было бы более надежным, если бы вы на самом деле выполняли проверку ссылки, используя следующий код. Проверка того, что текстгде-то на странице может привести к ложным срабатываниям (см. последнее сообщение на WatirMelon )

@ie.link(:url => arg1, :text => text).exists?.should be true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...