gpt4 book ai didi

angularjs - 通过 SauceLabs 远程下载文件时如何避免 "save as"提示

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:05 26 4
gpt4 key购买 nike

从 Jenkins 作业运行的 Protractor 规范,连接到 SauceLabs。它单击按钮下载 PDF,并检查文件是否已成功下载。我无法让 Chrome 浏览器不使用绝对路径打开“另存为”提示。如果我使用'~/Downloads'作为文件名,我可以避免“另存为”提示,但我的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 它,应该可以。

最佳答案

不确定这是否构成“答案”,但这就是我的处理方式。经过大量研究后,我认为测试远程虚拟机(如 SauceLabs)上下载的文件是否是不可能的。我所做的是将测试分为两部分:

  1. 测试下载按钮:单击按钮并断言没有发生错误
  2. 向按钮正在使用的底层端点 api/download 发出 GET 请求,将响应写入文件夹,然后从那里断言(使用 Nodejs)该文件存在于我的 Jenkins 项目的工作区中。这感觉很hacky,但鉴于 SauceLabs 似乎没有提供对运行 Webdriver 的虚拟机的太多访问权限,我看不到其他方法。

关于angularjs - 通过 SauceLabs 远程下载文件时如何避免 "save as"提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44833779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com