Принятие диалогового окна IE Webpage с Selenium - PullRequest
1 голос
/ 09 июля 2019

Я пытаюсь сделать автоматизацию для веб-страницы, которая работает только в IE.Я вхожу в приложение, и появляется окно «- Диалог веб-страницы» с надписью «ПРОД» и возможностью щелкнуть «ОК».Это не позволит мне продолжить, пока я не нажму OK.Я не могу понять, как принять эту коробку.Я не могу это проверить.Я пытался включить URL для всплывающих окон, но моя компания не позволит мне сделать это.Это разочаровывает, потому что все, что мне нужно сделать, это нажать ENTER, и это работает, но автоматизация просто не может отправить send_keys (Keys.ENTER).Я также попытался переключить окна, но есть только одно окно.Как я могу принять это поле, используя селен? enter image description here

Я пробовал driver.switch_to_alert (). Accept () или другие варианты.Он ничего не делает после того, как эта строка была выполнена.Программа считает, что она выполнила выполнение, но на самом деле это не так.

1 Ответ

1 голос
/ 10 июля 2019

Когда срабатывает оповещение и появляется всплывающее окно на веб-странице, элемент управления остается с родительской веб-страницей.Итак, сначала нам нужно переключить или передать элемент управления для всплывающего окна с предупреждением, прежде чем выполнять какие-либо операции.

Эту операцию переключения управления можно выполнить с помощью любого из нижеприведенных фрагментов кода.

alert = driver.switch_to.alert

, затем обработайте предупреждение, используя следующую команду:

alert.accept() – Will click on OK button

Более подробно, пожалуйста, проверьте эту статью .

Редактировать :

После проверки снимка экрана, я думаю, возможно, вы используете window.showModalDialog ()способ отображения всплывающего окна вместо оповещения.Поэтому мы не могли использовать метод alert.accept (), чтобы нажать кнопку «ОК».Вы можете использовать инструменты разработчика F12, чтобы проверить элемент Html, чтобы убедиться, что это веб-страница.

Поскольку это всплывающее окно для отображения веб-страницы, вы можете переключиться на всплывающее окно, а затем, используя find_element_by_id (), чтобы найти кнопку «ОК», после этого мы можем нажать кнопку, чтобы закрыть всплывающее окно.

Вы можете обратиться к следующему коду:

Код ввеб-страница (отобразить диалоговое окно веб-страницы):

<button id='show-windowdialog' onclick='window.showModalDialog("About.aspx", window)'>Open Webpage Dialog</button>

код Python:

from selenium import webdriver
driver = webdriver.Ie("D:\\Downloads\\webdriver\\IEDriverServer_x64_3.14.0\\IEDriverServer.exe")

# connect to the specific ip address
driver.get("http://localhost:54382/pythondhtmlpage.html")

driver.find_element_by_id("show-windowdialog").click()
# find the current window
main_page = driver.current_window_handle

handles = driver.window_handles
# print the window_handle length     
print(len(handles))

popup_window_handle = None
# loop through the window handles and find the popup window.
for handle in driver.window_handles:
    if handle != main_page:
        print(handle)
        popup_window_handle = handle
        break
# switch to the popup window.
driver.switch_to.window(popup_window_handle)
# trigger the close button to close the popup window.
driver.find_element_by_id("closewindow").click()

# Finally, switch to the main page.
driver.switch_to.window(main_page)

Затем снимок экрана, как показано ниже:

enter image description here

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