【问题标题】:Downloading a file in Microsoft Edge through Selenium通过 Selenium 在 Microsoft Edge 中下载文件
【发布时间】:2018-07-18 10:25:53
【问题描述】:

我必须自动化一个我必须使用 Selenium WebDriver 和跨浏览器下载文件的情况。

我已经在 Chrome(通过ChromeOptions)、FF(通过FirefoxProfile)和 IE11 上这样做了。例如,在 Firefox 中,我使用Firefox Profile 来抑制下载提示,如下所示:

profile.setPreference("browser.download.dir", "C:\\DownloadCleanup");
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.manager.showWhenStarting", false);      
profile.setPreference("browser.helperApps.alwaysAsk.force", false);   
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", mimeTypes);

而对于 IE11,我使用 Robot 类来按下组合键 Alt + S,如下所示:

Robot robot = new Robot();            
// simulate the "Alt + S" to save file on IE11 when Download Prompt appears
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_S);

而且一切正常。现在我想在 Edge 中执行此操作。但我找不到 Edge 的组合键,如 IE11 或设置,如 Chrome 和 FF。

我在 Edge 中手动尝试,但出现下载提示时似乎没有保存文件的快捷方式。因此,我的解决方法是转到 Edge -> 设置 -> 高级设置并停用此下载提示。

有谁知道如何通过 Selenium 做到这一点,比如在 Chrome、FF 中?

【问题讨论】:

  • 正确的测试自动化模式是使用浏览器“配置文件”,它可以是指向您选择的空的干净下载文件夹的预保存配置文件。因此很容易测试该文件是否已下载,但是 selenium 确实允许您在运行时控制配置文件,因为保存的配置文件文件会在浏览器更新后老化和中断。尝试使用github.com/microsoft/edge-selenium-tools 获取线索

标签: java selenium-webdriver webdriver automated-tests microsoft-edge


【解决方案1】:

别这样,你在浪费时间。

浏览器制造商已经测试了浏览器下载机制是否有效,如果发生最坏的情况并且出现故障,您无论如何都不能强迫您的用户更改浏览器版本。

如果您真的想检查服务器端是否存在文件,您可以使用标准 http 库(如 OkHttp)来执行此操作。你不需要实际下载文件来检查它是否存在,除非你主动检查文件内容,否则你应该避免下载它(在这种情况下,我建议使用 SHA1 或 MD5 哈希来检查文件匹配)。

我之前写过关于这个on my blog 的文章,尽管现在这些信息已经过时了。

【讨论】:

    【解决方案2】:

    如果您想在没有下载提示的情况下在 EDGE 上下载文件,您必须将 EDGE “EnableSavePrompt”的注册表项更改为 00000000。我在 C# 上使用此代码:

            RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge", true);
            if (key.OpenSubKey("Download") == null)
            {
                key.CreateSubKey("Download");
            }
            key = key.OpenSubKey(@"Download", true);
            key.SetValue("EnableSavePrompt", 00000000); 
            key.Close();
    

    【讨论】:

      猜你喜欢
      • 2017-11-04
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      相关资源
      最近更新 更多