Selenium Accept Alert - PullRequest
       67

Selenium Accept Alert

1 голос
/ 07 апреля 2020

Я использую модуль селена и извлекаю документы с веб-сайта так же, как извлекаю документ из файла Excel с кодами. Когда документы могут быть найдены, он работает отлично, но по какой-то причине alert = driver.switch_to.alert.accept () не принимает предупреждение, когда документ не найден. Обратите внимание, что не будет предупреждения, если документ будет найден. Похоже, это [! [База данных] [1]] [1] [! [Pi c предупреждения] [2]] [2] [! [Таблица Excel] [3]] [3] [! [ учетная запись присутствует] [4]] [4] Я пробовал свой код двумя разными способами, и для первого способа требуется исключение тайм-аута навсегда, есть ли способ сократить время, необходимое для тайм-аута, или как-то принять предупреждение. Другой способ, есть ли способ принять предупреждение? Для справки я использую Python 2.7.16, Selenium 3.12.0, Chromedriver 80.0 и Chrome Версия 80

for handle in driver.window_handles:
    if handle != main_window:
        select_handle = handle
driver.switch_to.window(select_handle)
try:
    try:
        alert = driver.switch_to.alert.accept()
    except TimeoutException:
        pass
    print "Report Not Found: " + acct
    driver.switch_to.window(select_handle)
    driver.close()
    driver.switch_to.window(main_window)
except NoAlertPresentException:
    driver.switch_to.window(select_handle)
    print "Report Found: " + acct

, и это еще одна другая попытка.

for handle in driver.window_handles:
    if handle != main_window:
        select_handle = handle
driver.switch_to.window(select_handle)
try:
    alert1 = WebDriverWait(driver, 5).until(EC.alert_is_present())
    alert1 = driver.switch_to.alert
    alert1 = Alert(driver)
    alert1.accept()
    print "Report Not Found: " + acct
    driver.switch_to.window(select_handle)
    driver.close()
    driver.switch_to.window(main_window)
except TimeoutException:
    driver.switch_to.window(select_handle)
    print "Report Found: " + acct```

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

driver.switch_to_window(driver.window_handles[-1])
title=driver.title
try:
    WebDriverWait(driver, 20).until(EC.alert_is_present(),'Timed out 
           waiting for ' + 'popup to appear.')
    alert = driver.switch_to.alert
    alert.accept()
    print "Report Not Found: " + acct
    driver.switch_to.window(select_handle)
    driver.close()
    driver.switch_to.window(main_window)
except TimeoutException:
    driver.switch_to.window(select_handle)
    print "Report Found: " + acct"


  [1]: https://i.stack.imgur.com/bSWyw.png
  [2]: https://i.stack.imgur.com/mSgBs.png
  [3]: https://i.stack.imgur.com/r3lYx.png
  [4]: https://i.stack.imgur.com/y15k8.png

1 Ответ

0 голосов
/ 07 апреля 2020

Пожалуйста, проверьте код ниже, если ваше предупреждение присутствует в дочернем окне.

driver.switch_to_window(driver.window_handles[-1])
title=driver.title

try:
        WebDriverWait(driver, 20).until(EC.alert_is_present(),
                                       'Timed out waiting for ' +
                                       'popup to appear.')

        alert = driver.switch_to.alert
        alert.accept()
        print("alert accepted")
    except TimeoutException:
        print("no alert")
...