Текстовые поля не заполняются правильно в watir-webdriver - PullRequest
1 голос
/ 27 января 2012

Я недавно решил перейти от использования watir к использованию watir-webdriver для моих тестовых сценариев.Это прекрасно работает за исключением этого странного поведения.Когда речь идет о форме с несколькими текстовыми полями, такими как поле имени и фамилия, она заполняет их неправильно.Обычно он заполняет имя, а затем заполняет букву или две из фамилии, затем возвращается к полю первого имени и добавляет остальную часть фамилии к имени.

Примербыть полями имени / фамилии.Я пишу сценарий, чтобы ввести Джима для имени и Джонсона для фамилии.Когда я запускаю сценарий, я получу имя Джимсон, а фамилию - Джо.Это как будто он решает вернуться назад к полю имени в середине поля фамилии.Это то, чего я никогда не испытывал, используя Watir, и искал похожие случаи вокруг, но мне не повезло.Надеюсь, кто-то может помочь.Вот пример кода, который я использую.Я не хочу использовать «сон 1», но обнаружил, что это единственное, что предотвращает это странное поведение.

 def fill_in_applicant_name(fName, lName)
  puts "Fills in the applicant first name"
  @@b.text_field(:id, "ApplicantFirstName").set(fName)

  #sleep 1

  puts "Fills in the applicant last name"
  @@b.text_field(:id, "ApplicantLastName").set(lName)
end

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Если вам нужен оператор сна, звучит так, будто после заполнения поля text_file запускается AJAX или Javascript?Поскольку вы явно называете заполненные поля text_fields, на самом деле нет другой причины, по которой я могу придумать, почему текст должен заканчиваться в одном поле.

Круглые скобки вокруг имен переменных излишни и неочень рубиноподобныйИх можно удалить.

Мой подход к этому методу будет использовать when_present, чтобы убедиться, что текстовое поле доступно.

def fill_in_applicant_name(first, last)
 @browser.text_field(:id, "First").when_present.set first
 @browser.text_field(:id, "Last").when_present.set last
end

Использование других методов ожидания по мере необходимости, если вы получаетеошибка

Watir::Watir.until(30) { @browser.text_field(:id, "Last").visble? }

Если это не сработает, вы можете выложить какой-нибудь код со страницы, которую вы тестируете, чтобы помочь нам?

1 голос
/ 02 февраля 2012

Ну, это была неделя или около того, чтобы создать и запустить watir-webdriver тесты с отключенными собственными событиями firefox.Это определенно было ответом на проблему.С тех пор, как я отключил родные события, у меня не было ни одного случая такого необычного поведения.Тесты / проверки проходят хорошо, и у меня есть только одна маленькая проблема.На одной из страниц приложения появляется всплывающее сообщение, которое никогда не исчезает при переходе на следующие страницы.Это немного раздражает, но никак не влияет на тесты.Спасибо всем за ваш вклад.Вот снова код для отключения нативных событий.

profile = Selenium::WebDriver::Firefox::Profile.from_name "webdriver"
profile.native_events = false
browser = Watir::Browser.new :firefox, :profile => profile
...