перехват события onload, запущенного браузером в watir - PullRequest
0 голосов
/ 27 марта 2012

У меня здесь уникальная ситуация. У меня есть кнопка в форме, которая выдает всплывающее окно, если в форме есть ошибки. [Я знаю, что это не очень хорошая практика, но разработчики продукта не будут изменять это поведение!] Форма переходит на другую страницу, если все необходимые поля заполнены правильно. Теперь мне нужно написать скрипт, чтобы нажать кнопку «Отправить» в форме, которая может вызвать всплывающее окно или перейти на следующую страницу.

Я использовал click_no_wait на кнопке «Отправить» и обработал всплывающее окно с помощью AutoIt согласно Javascript Popups в Watir . Теперь, если вся информация верна и форма переходит на следующую страницу, я использую задержку в скрипте, следуя некоторым методам, описанным в Как ждать с Watir . Я использую Watir :: wait_until () для ожидания в сценарии.

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

Мне было интересно, есть ли способ перехватить событие onload HTML-страницы в Watir, поскольку событие onload не запускается до тех пор, пока не будет загружена вся страница. Таким образом, я мог получить точную оценку значения тайм-аута, а не экспериментировать с ним. Таким образом, мой сценарий сейчас пройдет 100%, а не скажет 98%.

Спасибо за любую помощь по этой теме.

1 Ответ

1 голос
/ 27 марта 2012

Вы можете попытаться настроить спасение для тайм-аута, а затем зациклить разумное количество раз (2 или 3?), Если оно встретится с тайм-аутом.

* 1003 Е.Г. *

# All your button clicking and autoit stuff here
i = 0
begin
  b.wait_until{ # the thing you're waiting to happen }
  rescue TheSpecificTimeOutException 
  # Sorry I can't remember it, the command prompt will tell you exactly 
  # which one
   if i < 3
     i += 1
     retry
   else
     raise
   end
 end

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

...