Предотвращение отклонения предупреждений ruby ​​selenium-webdriver при поднятии UnhandledAlertError - PullRequest
3 голосов
/ 21 марта 2012

Глядя на журнал изменений для ruby ​​selenium-webdriver, я нашел эту строку под 2.18.0:

  • Firefox и IE:
    • Поднять UnhandledAlertError, если во время операции присутствует предупреждение. Необработанное предупреждение также отклоняется, чтобы смягчить повторные исключения.

По-моему, это ужасное изменение. Мне нравится исключение, но любые необработанные подтверждения отклоняются (возвращается false). Я бы очень хотел иметь возможность спасти исключение и обработать подтверждение самостоятельно.

К сожалению, я не могу найти код в геме selenium-webdriver, поэтому могу перезаписать этот раздел и избавиться от команды dismiss alert.

Как-нибудь обойти это (кроме возврата моей версии)?

Заранее спасибо,

1019 * Arth *

1 Ответ

0 голосов
/ 08 мая 2012

Я не уверен на 100%, что это то, что вам нужно, но, возможно, я все равно помогу.Насколько я понимаю, ваш вопрос заключается в том, что вы хотите «принудительно» спасти необработанные оповещения.

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

!20.times { break if (selenium.is_visible(driver.find_element(:id, 'loginid')) rescue false ) ; sleep 1 }

Вышеприведенное будет зациклено 20 раз (ожидая 1 секунду каждый раз), пытаясь найти элемент и сломаться, когда он его найдет.Обратите внимание, что я пока не спасаю его, так как это более надежно, чтобы поместить это между началом / концом.Примерно так ..:

    begin           
!20.times { break if (selenium.is_visible(driver.find_element(:id, 'loginid')) rescue false ) ; sleep 1 }

[your executing code here]      .
      .
      .
usr = driver.find_element(:id, 'loginid').click         
usr = driver.find_element(:id, 'loginid').send_keys(username)
      .
      .
rescue
      .
      .
[your rescure code here]
      .
      .

puts "____________________________________________________________________"
puts "*** FATAL ERROR --> located at login area (username/password) ***"
puts "Possible reasons for this error..:"
puts "Invalid credentials * Cannot locate element id * "
puts "____________________________________________________________________"
     .
end

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...