用Selenium接受IE网页对话框

时间:2019-07-09 16:32:31

标签: python selenium internet-explorer selenium-webdriver

我正在尝试对仅适用于IE的网页进行自动化。我登录到应用程序,然后出现一个“-网页对话框”框,显示PROD并可以单击“确定”。除非单击“确定”,否则它将不允许我继续。我不知道如何接受那个盒子。我无法检查。我试图打开弹出窗口的URL,但是我的公司不允许我这样做。令人沮丧的是,我要做的就是单击ENTER,它可以工作,但是自动化程序无法发送send_keys(Keys.ENTER)。我也尝试过切换窗口,但是只有一个窗口。我如何使用硒来接受此框?enter image description here

我尝试过driver.switch_to_alert()。accept()或其他变体。执行完该行后,它不执行任何操作。该程序认为它执行了执行,但实际上却没有执行。

1 个答案:

答案 0 :(得分:1)

每当触发警报并在网页上出现一个弹出窗口时,控件就会保留在父网页上。因此,在执行任何操作之前,我们首先需要切换或转移控件以弹出警报。

可以使用下面两个代码段中的任何一个来完成此控制切换操作。

alert = driver.switch_to.alert

然后,使用以下命令处理警报:

alert.accept() – Will click on OK button

更多详细信息,请检查this article

修改

检查截图后,我认为您可能正在使用window.showModalDialog()方法显示弹出窗口,而不是Alert。因此,我们无法使用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