我正在尝试对仅适用于IE的网页进行自动化。我登录到应用程序,然后出现一个“-网页对话框”框,显示PROD并可以单击“确定”。除非单击“确定”,否则它将不允许我继续。我不知道如何接受那个盒子。我无法检查。我试图打开弹出窗口的URL,但是我的公司不允许我这样做。令人沮丧的是,我要做的就是单击ENTER,它可以工作,但是自动化程序无法发送send_keys(Keys.ENTER)。我也尝试过切换窗口,但是只有一个窗口。我如何使用硒来接受此框?
我尝试过driver.switch_to_alert()。accept()或其他变体。执行完该行后,它不执行任何操作。该程序认为它执行了执行,但实际上却没有执行。
答案 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)
然后截图如下: