Автоматизировать нажатие кнопки веб-страницы в рубине

Я просто хочу автоматизировать нажатие кнопки на домашней странице. Я использую следующий фрагмент кода

Given /^I press "(.*)"$/ do |action|
  browser.button(:text => action).click
end

Мой файл функций имеет следующее

Scenario: Default Search 
    Given I press "Search" 

При выполнении файла функции, я получаю следующую ошибку

*** WARNING: You must use ANSICON 1.31 or higher (https://github.com/adoxa/ansicon/) to get coloured output on Windows
Ambiguous match of "I press "Search"":

C:/Users/............test/features/step_definitions/Moorings.rb:8:in `/^I press "(.*)"$/'

1 ответ

Хаа... у тебя вроде 3 появления текста "Search" на этой странице (www.moorings.com), поэтому watir Водитель действительно не знает, какой из них нажать.

Как я уже упоминал выше, попробуйте использовать что-то уникальное, возможно, id, как показано ниже:

#step definition
Given /^I press "(.*)", with id "(.*)"$/ do |text, id|
  browser.button(id: id, :text => text).when_present.fire_event :click
end

#feature
Scenario: Default Search 
    Given I press "Search", with id "edit-search" 

Обратите внимание, что я добавил еще одно ограничение id в атрибуты для поиска.

Также обратите внимание, что я добавил дополнительный слой проверки: .when_present, Это обеспечит ожидание появления указанной кнопки на странице, прежде чем пытаться нажать на нее. Однако время ожидания составляет около 30 секунд.

Другие вопросы по тегам