首页 > 解决方案 > 使用 Robot Framework 更改下载目录

问题描述

我目前能够访问网页并单击“下载”按钮。当我这样做时,下载会在默认目录中启动(下载......显然)

我想在我的桌面上创建一个文件夹并默认下载每个文件。我能怎么做?我需要什么?

标签: seleniumselenium-webdriverrobotframework

解决方案


您必须覆盖浏览器的默认下载目录。这可以通过配置 Web 驱动程序来完成。SeleniumLibrary的Open Browser关键字为此目的为 Firefox ( ff_profile_dir) 和 Chrome ( options) 提供了单独的参数。

此外,您必须根据您使用的特定浏览器启用自动保存和其他浏览器配置。

请注意,在 Windows 上工作时,传递的路径需要特别注意:

请注意,如果选项字符串包含反斜杠,例如 Windows 操作系统路径,则反斜杠需要在 Robot Framework 数据和 Python 端进行转义。这意味着必须使用四个反斜杠字符编写单个反斜杠。例如,Windows 路径: "C:\path\to\profile"必须写为"C:\\\\path\\\to\\\\profile". 另一种编写反斜杠的方法是使用 Python 原始字符串和示例 write: r"C:\\path\\to\\profile"

这是一个示例,它将使用 Firefox 和 SeleniumLibrary 4.3.0从 GitHub 下载 Robot Framework 的源代码。

*** Settings ***
Library    SeleniumLibrary

*** Test Case ***
Download Robot Framework into predefined folder
    Open Browser    https://github.com/robotframework/robotframework    Firefox   
    ...    ff_profile_dir=set_preference("browser.download.folderList", 2);set_preference("browser.download.dir", r"C:\\Users\\myuser\\Documents\\Robotframework\\SO_material");set_preference("browser.helperApps.neverAsk.saveToDisk", "application/zip")
    
    Click Element    //summary[contains(.,'Code')]
    Click Element    //a[contains(.,'Download ZIP')]
    [Teardown]    Close Browser

浏览器参数设置:

  1. browser.download.folderList设置在2哪里

    2表示自定义(参见:browser.download.dir)文件夹

    来源:下载管理器首选项

  2. browser.download.dir是自定义文件夹的路径。确保按照文档中的说明传递路径。我在这个例子中使用了 Python 原始字符串。

  3. browser.helperApps.neverAsk.saveToDiskapplication/zip意味着任何下载的 zip 都将被保存,而不会提示下载位置。

您可以在此 Stack Overflow 答案中找到指向 Chrome 和 Firefox 参数列表的链接:List of Firefox and Chrome arguments/preferences


推荐阅读