Как распечатать сообщение, когда сообщение об ошибке отображается на сайте selenium - PullRequest
0 голосов
/ 08 января 2020

Привет. Я пытаюсь очистить веб-сайт с помощью селена, через некоторое время веб-сайт блокирует мой ip для очистки, и появляется всплывающее сообщение.

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

blo = driver.find_element_by_xpath('/html/body/div[2]/div/div/div[1]/h3')
if blo:
    print('ip blocked')
else:
    print('eroor')

Но это не работает, я просто получаю пустой экран, Как я могу решить это

HTML из элемент:

<h3 class="modal-title">Notifications</h3>
<div class="alert alert-warning">Sorry, you have exceeded the maximum number of queries allowed per day. If you believe you have reached this message in error, please contact our support team.</div>

1 Ответ

2 голосов
/ 08 января 2020

Проверка наличия всплывающего сообщения , вы должны вызвать WebDriverWait для visibility_of_element_located(), и вы можете использовать любой из следующих Стратегий локатора :

  • Использование CSS_SELECTOR:

    try:
        WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "h3.modal-title+div.alert.alert-warning")))
        print("ip blocked")
    except TimeoutException:
        print("eroor")
    
  • Использование XPATH:

    try:
        WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//h3[@class='modal-title' and text()='Notifications']//following::div[@class='alert alert-warning']")))
        print("ip blocked")
    except TimeoutException:
        print("eroor")
    
...