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