当前位置: 首页 > 面试题库 >

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

冯亮
2023-03-14
问题内容

我正在尝试使用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()


 类似资料:
  • 我想使用下面页面弹出窗口上的滚动条。如果您单击页面上的任何产品,它将打开一个弹出窗口,您可以在其中添加额外的项目。我正在尝试使用向下滚动弹出窗口,但在Chrome中找不到滚动条元素。我曾尝试使用其他方法移动到元素,但没有成功,所以我想尝试使用箭头键。 https://www . just-eat . co . uk/restaurants-McDonalds-Victoria London/men

  • 问题内容: 在此练习中,我已经尝试了一段时间,以弄清楚如何在弹出窗口中输入用户名和密码: http://pentesteracademylab.appspot.com//lab/webapp/digest 但是我完全不熟悉Python中的Selenium。我发现了如何单击按钮,以便弹出登录表单: 但是我无法弄清楚如何访问该窗口,更不用说其中的字段了。我已经读过有关和。对于Windows,显示正在切

  • 问题内容: 我对Selenium完全陌生。我想在以下代码中执行一个javascript代码段(如代码中所注释),但是无法执行。请帮忙。 如果我使用- 它错误地显示为- 问题答案: 尝试代替。 要返回值,只需在传递给方法的字符串中使用JavaScript关键字,例如

  • 有人提到要工作吗?我已经设置了网格https://github.com/sterodium/selenium-grid-extensions网格设置本身似乎没问题,但当我实际运行使用sikulilibrary关键字的测试时,我得到了以下错误;Java语言lang.NoClassDefFoundError:无法初始化类组织。西库利。剧本Finder$Finder2。 我的网格设置: 机器人框架3.1

  • 本文向大家介绍python使用flask与js进行前后台交互的例子,包括了python使用flask与js进行前后台交互的例子的使用技巧和注意事项,需要的朋友参考一下 flask与js进行前后台交互代码如下,后台给前端发数据: python部分: js部分: 以上这篇python使用flask与js进行前后台交互的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程

  • 我正试图使用selenium和chromedriver进行全页截图,但我得到的是这一半截图。我尝试过其他方法,但到目前为止,只有这一个工作,它只需要半页截图。 任何人都可以用另一个技巧来修复这个问题,也可以附加输出结果。