在python中使用硒selenium与弹出框进行交互

我正在尝试使用python中的Selenium模块从

一个网站生成文本列表,将其保存在目录中,然后浏览至另一

站点上的该文本列表以提交它。

我将脚本分为两个部分:1.获取元数据和2.订购数据。

除了最后一

件事,我已经成功完成了第1部分中的脚本:选择保存刚刚生成的元数据文件。我将其留给第二

部分工作,希望我会偶然发现答案,但是

当弹出选择文件的弹出窗口时,我只是遇到了同样的问题。

在文档中,我被告知

Selenium WebDriver内置了对处理弹出对话框的支持,并且

在触发对话框后,如果我打电话,alert = driver.switch_to_alert()我就可以“接受,关闭,阅读其内容,

甚至在提示符下键入。”

但是,它不起作用。当我尝试alert.text(‘some text’)or时

alert.send_keys(Keys.TAB),我不断收到错误消息,

NoAlertPresentException: Message: No alert is present并添加了

命令以等待,然后收到错误消息TimeoutException: Message:

Selenium无法识别我收到的弹出窗口(附带屏幕截图)吗?

如果是这样,我如何与他们互动?似乎

很多人都必须使用它来保存和/或上传文件,但是我

在Google上找不到任何东西。具体来说,我想

为第一个图像选择“保存文件”,然后选择“确定” ,对于第二个图像,我想浏览到该文件

(即在“文件名”字段中输入路径)并单击“打开”。我不想

只是将Firefox设置更改为自动保存,因为它

最终将在不同的环境中运行,而这将无助于解决我的

第二个问题。

谢谢!

编辑:我正在Windows上测试我的脚本,但最终将

在Linux云服务器上实现。我以为我将不得不切换到PhantomJS

webdriver(这可能会使我的问题更糟)来进行无头

浏览,但是我找到了一种保留firefox的方法。我想这一切都意味着我

无法使用AutoIT来解决我的问题。

回答:

您看到的弹出式窗口不是可以使用进行交互的常规弹出式窗口

switch_to。

这些弹出窗口是系统对话框,不能使用来自动进行selenium。

通常人们会通过调整

浏览器首选项来避免首先显示这些对话框,例如:

  • How to download a file using Selenium’s WebDriver?

对于上载,通常可以找到适当的输入元素,

并向其发送键以及文件路径:

  • How to upload files into file inputs? (python-selenium docs)

如果您的情况无法解决,请使用

我随附的链接中的答案。

对于第一个“自动下载文件”问题,您只需要设置

正确的内容类型即可:

profile.set_preference('browser.helperApps.neverAsk.saveToDisk', "application/xml,text/xml")

第二个问题解决方案(上传部分):

driver.find_element_by_name("input_product_list").send_keys(textpath)

driver.find_element_by_name('include_sr').click()

driver.find_element_by_id('submit').click()

以上是 在python中使用硒selenium与弹出框进行交互 的全部内容, 来源链接: utcz.com/qa/414342.html

回到顶部