【问题标题】:How to avoid "save as" prompt when remotely downloading file via SauceLabs通过 SauceLabs 远程下载文件时如何避免“另存为”提示
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果默认下载目录不存在,即使选项设置为“false”,您也会收到提示。 "./downloads" 是 OSX 语法,chrome 驱动可能不理解。

      试试这个:

      default_directory: __dirname + '/downloads'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        • 2017-10-06
        • 1970-01-01
        相关资源
        最近更新 更多