我想使用webdriverIO下载.dmg文件,当单击链接时,弹出文件下载弹出窗口,它是.dmg文件。如何处理要求“保存”或“取消”的弹出窗口?
答案 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协议的任何其他浏览器,那么下面的方法应该可以使用。
npm install @wdio/devtools-service --save-dev
package.json应该同时提到并安装devtools
和devtools-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"
},
browser.cdp()
代码段,以无头模式将Page.setDownloadBehavior()
命令发送到浏览器。
在您点击下载按钮之前,需要先添加该代码段。根据您的需要更改download_path
,确保它是绝对的。browser.cdp('Page', 'setDownloadBehavior', {
behavior: 'allow',
downloadPath: download_path,
});
// place before clicking the download button
$(.button).click()
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和其他几种解决方案的信息,如果这不起作用的话。