Selenium Python:与系统模式对话框交互

Selenium Python:与系统模式对话框交互,python,selenium,Python,Selenium,我正在浏览器中运行应用程序;对于一些动作,我能够用按键模拟动作;但我有一个特殊的问题:我的应用程序中的一些操作会导致系统提示弹出,例如保存或确认退出 在Selenium python中有没有控制这些的方法?例如,想象使用按键来保存页面;然后出现系统对话框(它不是web应用程序的一部分),询问您将文件保存到哪里。或者想象一下,当您打开多个选项卡时,会出现提示,询问您是否确定要关闭浏览器窗口 我确实尝试过寻找一个不同的窗口,假设我可以在浏览器中的窗口之间切换上下文,但在主应用程序旁边找不到任何内容,

我正在浏览器中运行应用程序;对于一些动作,我能够用按键模拟动作;但我有一个特殊的问题:我的应用程序中的一些操作会导致系统提示弹出,例如保存或确认退出

在Selenium python中有没有控制这些的方法?例如,想象使用按键来保存页面;然后出现系统对话框(它不是web应用程序的一部分),询问您将文件保存到哪里。或者想象一下,当您打开多个选项卡时,会出现提示,询问您是否确定要关闭浏览器窗口


我确实尝试过寻找一个不同的窗口,假设我可以在浏览器中的窗口之间切换上下文,但在主应用程序旁边找不到任何内容,因为这些是系统窗口。有解决方法吗?

您可以使用Selenium方法检查当前窗口并移动到另一个窗口:

你可以用

driver.window_handles
要查找窗口句柄列表,请尝试使用以下方法切换()

  • 驱动程序。切换到报警()
  • driver.switch\u至.active\u元件
  • 驱动程序。切换到默认内容
  • driver.切换到.window
由于您使用的应用程序似乎响应Selenium命令,因此这里的示例是打开弹出窗口、切换Selenium作用域、提取数据并关闭弹出窗口。 对所有产品重复该过程:

for item in driver.find_elements_by_class_name("products"):
    item.click() # clicking on item activate a popup
    driver.switch_to_alert() #switch to new window
    # Get data
    driver.find_elements_by_css_selector(".ui-dialog-titlebar-close.ui-corner-all")[0].click() #close window
如果您谈论的是系统对话框,那么就不可能使用selenium与它们交互

但是,对于浏览器弹出窗口(警报),只需导航到弹出窗口:

driver.switch_to_alert()
然后,使用
警报
类中的方法与弹出窗口交互。
警报
类包含用于解除、接受、输入和从警报提示中获取文本的方法

一些例子:

Alert(driver).accept()
Alert(driver).dismiss()
Alert(driver).authenticate()
Alert(driver).send_keys(keys_to_send)
Alert(driver).text()
见: