use*_*408 3 python selenium selenium-webdriver
我正在尝试在python中使用Selenium模块从一个网站生成文本列表,将其保存在目录中,然后浏览到另一个站点上的该文本列表以提交它.
我正在分两部分编写脚本 - 1.获取元数据和2.订购数据.我已经成功完成了第1部分中的脚本,除了最后一件事:选择保存刚刚生成的元数据文件.我把它留在第2部分工作,希望我会偶然发现答案,但是当选择文件的弹出框出现时我只是遇到同样的问题.
在文档中,我被告知Selenium WebDriver内置支持处理弹出对话框,并且在触发对话框之后,如果我调用alert = driver.switch_to_alert()那么我可以"接受,关闭,读取其内容,甚至输入提示".
但是,它不起作用.当我尝试alert.text('some text')或alert.send_keys(Keys.TAB),我不断得到错误,NoAlertPresentException: Message: No alert is present并在添加命令等待后,我得到错误TimeoutException: Message:
我得到的弹出窗口(连接截图)是否被Selenium识别?如果是这样,我该如何与他们互动?似乎使用它来保存和/或上传文件是许多人必须要做的事情,但我在谷歌上找不到任何东西.具体来说,我想为第一张图片选择"保存文件",然后选择"确定",第二张图片我想浏览文件(即输入文件名字段的路径),然后点击"打开".我不想只是将我的Firefox设置更改为自动保存,因为这最终将在不同的环境中运行,这无助于解决我的第二个问题.
谢谢!
编辑:我正在Windows上测试我的脚本,但它最终将在Linux云服务器上实现.我以为我将不得不切换到PhantomJS webdriver(这可能会让我的问题变得更糟)去做无头浏览,但我找到了一种方法来保持Firefox.我想这一切都意味着我无法使用AutoIT来解决我的问题.

您看到的弹出窗口不是可以与之交互的常规弹出窗口switch_to.这些弹出窗口是系统对话框,无法自动使用selenium.
通常人们通过调整浏览器首选项来避免首先显示这些对话框,例如:
对于上传,通常您可以找到相应的输入元素并使用文件路径向其发送密钥:
如果您的案例无法通过我附上的链接中的答案解决,请告诉我.
至于你的第一个"自动下载文件"问题,你只需要设置一个正确的内容类型:
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', "application/xml,text/xml")
Run Code Online (Sandbox Code Playgroud)
第二个问题修复(上传部分):
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6332 次 |
| 最近记录: |