从Jenkins作业运行的量角器规范,连接到SauceLabs。它单击按钮下载PDF,并检查文件是否已成功下载。我无法让Chrome浏览器使用绝对路径打开“另存为”提示。如果我将'~/Downloads'
用作filename
,我可以避免“另存为”提示,但是等待文件存在的browser.wait
会永久挂起。
// spec.js
import fs from 'fs'
import path from 'path'
fs.mkdirSync('./downloads')
describe('Clicking DOWNLOAD button', () => {
it('should download a proposal', () => {
const filename = path.resolve(__dirname, './downloads/proposal.pdf')
if (fs.existsSync(filename)) {
fs.unlinkSync(filename)
}
page.downloadProposalBtn.click()
browser.wait(() => fs.existsSync(filename), 180000)
.then(() => {
expect(fs.existsSync(filename)).toBe(true)
})
}, 180000)
})
以下是我的conf文件的相关部分。我希望prompt_for_download
设置可以使提示不显示,但确实如此..
// conf.js
capabilities: {
platform: 'macOS 10.12',
browserName: 'chrome',
version: '59.0',
screenResolution: '1400x1050',
chromeOptions: {
args: ['--no-sandbox', '--test-type=browser', 'disable-infobars=true'],
prefs: {
download: {
prompt_for_download: false,
directory_upgrade: true,
default_directory: path.resolve(__dirname, './downloads'),
},
credentials_enable_service: false,
},
},
},
我错过了什么吗?我觉得我可能误解了Saucelabs运行这些测试的地方,但是看起来我给fs.mkdir
./downloads文件夹,然后当我path.resolve
时,它应该可以工作。
答案 0 :(得分:1)
不确定这是否构成“答案”,但这就是我的进展方式。经过大量研究后,我认为测试是否无法在远程VM(如SauceLabs)上下载文件。我正在做的是将测试分成两部分:
答案 1 :(得分:0)
即使该选项设置为" false"您也会收到提示。如果默认下载目录不存在。 " ./下载"是OSX语法,Chrome驱动程序可能无法理解。
请改为尝试:
default_directory: __dirname + '/downloads'