Selenium не может обрабатывать всплывающие окна или оповещения в Python - PullRequest
0 голосов
/ 09 сентября 2018

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

time.sleep(LOADING_TIME)
alert = driver.switch_to.alert
print(alert.text())

Но, когда я делаю это, я получаю следующую ошибку -

selenium.common.exceptions.NoAlertPresentException: Message: no such alert
  (Session info: chrome=69.0.3497.81)
  (Driver info: chromedriver=2.41.578706 (5f725d1b4f0a4acbf5259df887244095596231db),platform=Mac OS X 10.13.6 x86_64)

Может кто-нибудь сказать мне, что я делаю не так? Обратите внимание: я использую драйвер Chrome для инициализации драйвера селена, и пример, который я добавил здесь, можно найти, когда вы захотите добавить расширение в браузер Chrome. enter image description here

1 Ответ

0 голосов
/ 09 сентября 2018

Проблема в том, что driver.switch_to.alert - это функция.

Измените это так:

driver = webdriver.Chrome()
driver.get(your_url)

alert = driver.switch_to_alert()
alert.accept()

# Eventually do anything else.

driver.close()

[EDIT]

Поскольку кажется, что селен не распознает диалоговое окно, вы можете использовать модуль pywinauto : чтобы получить диалоговое окно и взаимодействовать с ним.

from pywinauto import Application


driver_handle = driver.current_window_handle  # get driver window handle
app = Application().connect(handle = driver_handle)  # initialize app

dialog = pywinauto.app.top_window_()  # select the dialog

dlg.control.Addextension.Click()  # click on "Add extension" button
...