如何设置使用WebdriverIO下载.dmg文件的首选项?

时间:2019-05-06 08:48:41

标签: javascript webdriver-io

我想使用webdriverIO下载.dmg文件,当单击链接时,弹出文件下载弹出窗口,它是.dmg文件。如何处理要求“保存”或“取消”的弹出窗口?

2 个答案:

答案 0 :(得分:1)

如果问题是保存弹出窗口,则可以通过为浏览器设置默认下载位置来避免弹出窗口。

对于CHROME:在wdio.conf.js文件中的capabilities中添加以下内容:在添加之前,请确保已定义downloadDir并使用需要保存文件的默认路径。

capabilities: [{
    browserName: 'chrome',
    // this overrides the default chrome download directory with our temporary one
    chromeOptions: {
      prefs: {
        'download.default_directory': downloadDir
      }
    }
  }]

此代码将设置默认的下载目录,并且您将不再看到弹出窗口。

更多信息:https://blog.kevinlamping.com/downloading-files-using-webdriverio/

谢谢, Naveen

答案 1 :(得分:0)

对于那些登陆这里的人来说,寻找在无头浏览器中使用WebdriverIO下载文件的方法,可以尝试以下解决方案。当使用新的Devtools automation protocol

时,以上解决方案不适用于以无头模式运行的浏览器

我的设置是headless Chromium + WebdriverIOv6 using Devtools protocol,使用click()方法通过单击按钮来下载文件。如果您使用相同的设置或具有Devtools协议的任何其他浏览器,那么下面的方法应该可以使用。

  1. 安装devtools-service npm install @wdio/devtools-service --save-dev

package.json应该同时提到并安装devtoolsdevtools-service

 "devDependencies": {
    "@wdio/cli": "^6.2.0",
    "@wdio/devtools-service": "^6.4.0",
    "@wdio/local-runner": "^6.2.0",
    "@wdio/mocha-framework": "^6.2.0",
    "@wdio/spec-reporter": "^6.1.23",
    "@wdio/sync": "^6.2.0",
    "devtools": "^6.2.0"
  },
  1. 在规格文件中添加browser.cdp()代码段,以无头模式将Page.setDownloadBehavior()命令发送到浏览器。 在您点击下载按钮之前,需要先添加该代码段。根据您的需要更改download_path,确保它是绝对的。
browser.cdp('Page', 'setDownloadBehavior', {
        behavior: 'allow',
        downloadPath: download_path,
    });

// place before clicking the download button
$(.button).click()
  1. 在wdio.conf.js文件中,您的capabilities属性需要看起来像这样,以便下载路径也可以在GUI模式下工作。
capabilities: [{
        browserName: "chrome",
        'goog:chromeOptions':{
          binary: "/usr/bin/chromium",
          args: ["--headless", "--disable-gpu", "--no-sandbox"],
        prefs: {
            'safebrowsing.enabled': false,
            'safebrowsing.disable_download_protection': true,
            "download": {
                "prompt_for_download": false,
                "directory_upgrade": true,
                "default_directory": download_path
            },
          }
        },
    }],

这应该有效。阅读更多有关how it works和其他几种解决方案的信息,如果这不起作用的话。