2014-04-28 3 views
0

Я хочу проверить значение в пользовательском интерфейсе с предоставленным значением в скрипте. И при сравнении этих двух, он должен отображать сообщение «тест прошел» в консоли.Как поставить утверждения в Selenium webdriver Ruby script?

Я написал следующий код: -

browser.find_element(:xpath,"//*[@id="total"]/tbody/tr/td[4]/span").value.should == "$466,634,599.67" 

Но ничего на консоли не отображается. Что может потребоваться дальше?

Спасибо! Abhishek

+0

Вы используете тестовую основу - пример Cucumber, RSpec и т. Д.? Получение структуры для вывода на консоль может отличаться от сценария без рамки. –

+0

@JustinKo Я не использовал тестовые рамки. Это моя первая попытка автоматизации, и у меня есть простой скрипт, который требует Selenium Webdriver и команды, подобные выше, которые выполняют эту работу. – SoftwareTestingEnthusiast

ответ

1

Assertions, например, в .should==, как правило, используются в рамках тестовой структуры, такие как RSpec, MiniTest, огурцы и т.д. Эти рамки тестирования разработаны, чтобы иметь отчетность Пропустите утверждение в или результат неудачи.

Учитывая, что вы не используете тестовую среду, вам необходимо вручную обработать результат результатов.

Самый простой способ будет уронить утверждение части и использовать if заявление:

element_value = browser.find_element(:xpath,"//*[@id="total"]/tbody/tr/td[4]/span").text 
if element_value == "$466,634,599.67" 
    puts 'Test passed' 
else 
    puts 'Test failed' 
end 

Обратите внимание, что puts заявления используются для вывода результатов на консоль (если вы не изменили местоположение вывода по умолчанию).

В качестве альтернативы, если вы хотите использовать утверждение, вы можете сделать:

element_value = browser.find_element(:xpath,"//*[@id="total"]/tbody/tr/td[4]/span").text 
element_value.should == "$466,634,599.67" 
puts 'Test passed' 

При таком подходе утверждение вызовет исключение, если тест не пройден. Утверждение остановит выполнение кода и поэтому не выведет сообщение «Test прошло» (как ожидалось). Если тест пройдет, сообщение «Test прошло» будет выведено.

+0

Большое вам спасибо .. его отличный совет. – SoftwareTestingEnthusiast

+0

Я пробовал использовать .value, но он печатает значение nil вместо фактического значения. browser.find_element (: css, "# total> tbody> tr> td: nth-child (4)> span"). Attribute ('value') браузер.find_element (: css, "# total> tbody> tr> td: nth-child (4)> span"). Значение Ничего не работает! – SoftwareTestingEnthusiast

+0

Возможно, вы захотите сделать '.text' вместо' .value'. По-видимому, нет метода '.value' для пролетов в Selenium-Webdriver. 'attribute ('value')' получает значение значения атрибута, которое, вероятно, не имеет вашего элемента span. –

0

Я использую для этой цели capybara драгоценный камень. Он может проверять почти все возможности переднего плана. код должен выглядеть примерно так:

+0

Я новичок в автоматизации, мне нужно снова написать весь сценарий в Капибаре? – SoftwareTestingEnthusiast

+0

Как включить Capybara в мой существующий код? – SoftwareTestingEnthusiast

+0

Добавьте «gem 'capybara» в Gemfile и установите пакет. Затем следуйте инструкциям [this] (https://github.com/jnicklas/capybara#using-capybara-with-rspec). И в конце вам может понадобиться добавить хак из [здесь] (http://stackoverflow.com/questions/8862967/visit-method-not-found-in-my-rspec), чтобы получить работу capybara (последний ответ работает на меня). Удачи. – iSunRise