как обрабатывать предупреждения javascript в selenium с помощью python

Итак, я хочу нажать эту кнопку, и если это первый раз, когда вы ее нажали. Появится всплывающее окно предупреждения javascript. Я использую firebug и просто не могу найти, где находится этот javascript, и я пробовал

if EC.alert_is_present:
        driver.switch_to_alert().accept()
else:
    print("no alert")

приведенный выше код работает, если есть окно предупреждения, но будет выдавать ошибку, если ее нет. хотя есть еще одно утверждение, которое я даже пробовал

   if EC.alert_is_present:
            driver.switch_to_alert().accept()
   elif not EC.alert_is_present:
               print("no alert")

он бросает мне эту ошибку

selenium.common.exceptions.NoAlertPresentException: Message: No alert is present

как мы вам вокруг этого?

2 ответов


используйте try catch и если предупреждение отсутствует catch NoAlertPresentException исключения:

from selenium.common.exceptions import NoAlertPresentException

try:
    driver.switch_to_alert().accept()
except NoAlertPresentException as e: 
    print("no alert")

вот как вы это делаете:

from selenium.common.exceptions import NoAlertPresentException
try:
    context.driver.switch_to.alert.accept()
except NoAlertPresentException:
    pass

вы можете заменить pass С print заявление, если хотите. Обратите внимание на использование switch_to.alert, а не switch_to_alert(). Последнее уже давно не приветствуется. В версии Selenium у меня здесь, я вижу это в своем коде:

warnings.warn("use driver.switch_to.alert instead", DeprecationWarning)