Selenium Alert Handling Python - PullRequest
       1

Selenium Alert Handling Python

0 голосов
/ 05 марта 2020

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

Вот мой текущий код

from selenium import webdriver
import pandas as pd
import time

path = "C:/Users/dge/Desktop/Database/NewPythonProject/html Grabber/Output/Pics/"
df = pd.DataFrame()
df = df.append(pd.read_csv('crime.csv'), ignore_index=True)
driver = webdriver.Chrome('C:/Users/dge/Desktop/Database/NewPythonProject/html Grabber/chromedriver.exe')

for i in df.index:
    print(i)
    pic = path + df['site'][i] + '.png'
    driver.get('http://' + df['site'][i])
    time.sleep(5)
    driver.save_screenshot(pic)

Я видел это, но просто не уверен, как добавить это в l oop

driver.find_element_by_id('').click()
alert = driver.switch_to_alert()

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

1 Ответ

1 голос
/ 07 марта 2020

JavaScript можно создать alert(), confirm() или prompt()

Нажать кнопку OK

driver.switch_to.alert.accept()  # press OK

Нажать кнопку CANCEL (которая существует только в confirm() и prompt())

driver.switch_to.alert.dismiss()  # press CANCEL

Поместить некоторый текст в prompt() до его принятия

prompt = driver.switch_to.alert
prompt.send_keys('foo bar')
prompt.accept()

Нет функции, чтобы проверить, если предупреждение отображается
, но вы можете поместить его в try/except, чтобы перехватить ошибку при отсутствии предупреждения.

try:
    driver.switch_to.alert.accept()  # press OK
    #driver.switch_to.alert.dismiss()  # press CANCEL
except Exception as ex:
    print('Exception:', ex)

Минимальный рабочий пример.

Поскольку я не знаю страницу, на которой отображается предупреждение, поэтому я использую execute_script для его отображения.

from selenium import webdriver
import time

#driver = webdriver.Firefox()
driver = webdriver.Chrome()

driver.get('http://google.com')

# --- test when there is alert ---

driver.execute_script("console.log('alert: ' + alert('Hello World!'))")
#driver.execute_script("console.log('alert: ' + confirm('Hello World!'))")
#driver.execute_script("console.log('alert: ' + prompt('Hello World!'))")
time.sleep(2)

try:
    driver.switch_to.alert.accept()  # press OK
    #driver.switch_to.alert.dismiss()  # press CANCEL
except Exception as ex:
    print('Exception:', ex)

# --- test when there is no alert ---

try:
    driver.switch_to.alert.accept()  # press OK
    #driver.switch_to.alert.dismiss()  # press CANCEL
except Exception as ex:
    print('Exception:', ex)

# ---

driver.save_screenshot('image.png')
driver.close()

КСТАТИ: , если вы хотите сначала попробовать нажать CANCEL, а когда он не работает, нажмите OK

try:
    driver.switch_to.alert.dismiss()  # press CANCEL
except Exception as ex:
    print('Exception:', ex)
    try:
        driver.switch_to.alert.accept()   # press OK
    except Exception as ex:
        print('Exception:', ex)

Кстати: различные проблемы могут быть всплывающими уведомлениями или оповещениями о геолокации

Как нажать Разрешить при всплывающем окне Показать уведомления с помощью Selenium Webdriver

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