【问题标题】:Download files automatically in Internet Explorer 11 with Python and Selenium使用 Python 和 Selenium 在 Internet Explorer 11 中自动下载文件
【发布时间】:2020-06-02 16:22:48
【问题描述】:

我正在尝试使用 Python 和 Selenium 同时通过多个 Internet Explorer 11 窗口下载一些 Excels 文件。当“另存为”弹出窗口出现并且单击保存按钮的唯一方法是发送密钥(alt + s)时,问题就出现了。但要做到这一点,焦点必须在浏览器窗口上,正如我之前所说,我需要同时启动多个 IE11 窗口并做同样的事情。

AutoIt、Robot 之类的工具或仅事件发送键无效,因为这些工具使用操作系统,我认为必须有一个像 javascript 或 Python 之类的解决方案来处理每个应该工作的窗口浏览器。

感谢您的帮助,谢谢!!

【问题讨论】:

标签: javascript python selenium download internet-explorer-11


【解决方案1】:

在 Java 中试过,文件已下载。

driver.findElement(By.xpath("//body")).sendKeys(Keys.chord(Keys.CONTROL, "j"));
Thread.sleep(2000);
Robot rb = new Robot();
rb.keyPress(KeyEvent.VK_ENTER);

说明:

  1. 首先点击按钮/链接下载文件。会看到这个弹出窗口
  2. 单击“Ctrl+j”将打开“查看下载”弹出窗口。 然后点击回车,因为焦点会在最近的文件上,所以会被下载

【讨论】:

    【解决方案2】:

    据我所知,当您单击下载链接或按钮时,WebDriver 无法访问浏览器显示的 IE 下载对话框。但是,我们可以使用名为“wget”的单独程序绕过这些对话框。

    通过使用这个程序,我们首先可以得到超链接的href属性值,然后,执行命令提示符命令从链接中下载文件。

    示例代码:

    import time
    import os
    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    cap = DesiredCapabilities().INTERNETEXPLORER
    cap['ignoreZoomSetting'] = True
    driver = webdriver.Ie("D:\\Downloads\\webdriver\\IEDriverServer_x64_3.14.0\\IEDriverServer.exe",capabilities= cap)
    
    
    driver.get("<website url>")
    
    time.sleep(3)
    
    btn = driver.find_element_by_id("btnDowloadReport")
    
    
    hrefurl = btn.get_attribute("href")
    
    os.system('cmd /c D:\\temp\\wget.exe -P D:\\temp --no-check-certificate ' + hrefurl)
    
    
    print("*******************")
    

    HTML 资源:

    <a id="btnDowloadReport" href="https://github.com//sakinala/AutomationTesting/raw/master/samplefile.pdf" >Download</a>
    

    [注意]:请记得改成自己的webdriver路径和网址。

    更多使用wget的详细信息,可以参考this article

    【讨论】:

    • 感谢您的帮助!,网页中没有 href 元素,开始下载文件的最后一步是使用下一个元素:onClick("main.filaPopupV3_1 .select('download_label');") 问题是我没有该文件的任何 URL。再次感谢!
    • IE下载提示还有另外一种处理方法,我们可以使用VBA来做IE浏览器的自动化测试(使用这种方法不会使用selenium webderiver)。通过使用该方法,我们可以使用 sendkeys 方法触发 IE 浏览器中的 Save 按钮并保存文件。更多详细信息,您可以查看此线程:Thread 1Thread 2
    猜你喜欢
    • 2016-04-29
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 2020-07-06
    相关资源
    最近更新 更多