【问题标题】:How to check if file got downloaded from browser using selenium2library如何使用 selenium2library 检查文件是否从浏览器下载
【发布时间】:2016-05-26 10:43:02
【问题描述】:

有人可以帮助我如何使用 selenium2library,RobotFramework 检查文件是否从浏览器下载。在我当前的测试中,我可以单击下载按钮并且文件正在下载,但是如果文件没有被下载会发生什么按钮被点击。任何示例代码都有帮助。

【问题讨论】:

  • Selenium2Library 只处理浏览器内部发生的事情。您应该使用操作系统库来检查磁盘上是否存在该文件。也许使用“文件应该存在”关键字
  • 谢谢@Pekka,有可能在浏览器中为特定目录提供自动下载选项
  • 我可以知道 File Should Exist 关键字是否与平台无关?我的测试需要在 Linux 和 windows 平台上执行
  • 我正在尝试的代码如下,请让我知道 ${preferences} = 创建字典 browser.download.folderList = 2 browser.download.dir = C:/Users 有什么问题/mra001/Downloads/Cambium_Builds 打开浏览器 ${cnMaestro_URL} ${Browser} desired_capabilities=${preferences}
  • 不幸的是 Selenium2Library Open Browser 关键字文档说只有在使用远程服务器时才能使用 desired_capabilities。这可以解释为什么您的代码不起作用。我认为一种解决方法是创建一个新的 firefox 配置文件并使用 ff_profile_dir 参数加载它。从这里检查 Firefox 配置文件:support.mozilla.org/en-US/kb/…

标签: selenium-webdriver robotframework selenium2library


【解决方案1】:

在 chrome 中,我打开 chrome://downloads 页面,然后从 shadow DOM 中检索下载的文件列表,如下所示:

const docs = document
  .querySelector('downloads-manager')
  .shadowRoot.querySelector('#downloads-list')
  .getElementsByTagName('downloads-item');

此方案受限于chrome,数据还包含文件路径和下载日期等信息。

【讨论】:

    【解决方案2】:

    查看此链接 - http://ardesco.lazerycode.com/testing/webdriver/2012/07/25/how-to-download-files-with-selenium-and-why-you-shouldnt.html

    此外,您可以通过以下方式将文件自动下载到特定目录 -

    FirefoxProfile profile = new FirefoxProfile();
    profile.SetPreference("browser.download.folderList",2);
    profile.SetPreference("browser.download.dir", @"c:\path\to\downloads \folder");   
    FirefoxDriver driver = new FirefoxDriver(profile);
    

    【讨论】:

    • 您的答案不应包含指向您博客的链接。如果您链接到相关的特定博客条目,则有例外。如果您想宣传您的博客,请将其放在您的个人资料页面上。
    • @BryanOakley 你能帮我纠正我的代码 ${preferences} = 创建字典 browser.download.folderList = 2 browser.download.dir = C:/Users/mra001/Downloads/Cambium_Builds open浏览器 ${cnMaestro_URL} ${Browser} desired_capabilities=${preferences}
    【解决方案3】:

    你可以使用下面的python函数来下载文件而不显示对话框。

    您还可以设置不应该显示哪种类型的文件保存文件对话框的首选项。

    def create_profile():
        from selenium import webdriver
        fp =webdriver.FirefoxProfile()
        fp.set_preference("browser.download.folderList",2)
        fp.set_preference("browser.download.manager.showWhenStarting",False)
        fp.set_preference("browser.download.dir",'C:/Users/mra001/Downloads/Cambium_Builds')
        fp.set_preference("browser.helperApps.neverAsk.saveToDisk",'text/csv/xls')
        fp.update_preferences()
        return fp.path
    

    【讨论】:

    • 给出的有效路径是什么。我已经尝试过 c:\\Users\\mra001 和 c:/Users/mra001 ..在所有情况下我都收到如下错误`WebDriverException:消息:目标 URL create_profile 格式不正确。 Stacktrace:在 FirefoxDriver.prototype.get (file:///c:/users/mra001/appdata/local/temp/tmpgb0b3o/webdriver-py-profilecopy/extensions/fxdriver@googlecode.com/components/driver-component.js :10636) 在 DelayedCommand.prototype.executeInternal_/h (file:///c:/users/mra001/appdata/local/temp/tmpgb0b3o/webdriver-py-profile `
    • 我作为 C:\\temp 给出。它可以正常工作。确保该路径存在。
    猜你喜欢
    • 1970-01-01
    • 2012-09-29
    • 2018-09-12
    • 2016-09-26
    • 1970-01-01
    • 2023-03-21
    • 2023-03-14
    • 1970-01-01
    • 2013-05-29
    相关资源
    最近更新 更多