【发布时间】:2017-12-03 15:58:01
【问题描述】:
从 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 它时,它应该可以工作。
【问题讨论】:
标签: angularjs node.js jenkins protractor saucelabs