如何使用 Browserstack 测试输入类型="file"

How can I test an input type="file" with Browserstack

所以,我一直在尝试使用 Browserstack 和 Intern.js 测试输入类型="file",但我一直收到 "File not found" 错误,因为 Browserstack 在中搜索文件我的电脑。

我知道 Browserstack 具有 Upload/Download 功能,但从他们的文档中我不太了解如何使用它。

使用 type 方法将本地系统上文件的路径输入到输入中。实习生会将文件上传到远程系统,然后在远程浏览器的文件输入中select新上传的文件。

return remote
    .findElementById('file-input')
    .type('/tmp/somefile.txt') <-- Path on the local system

问题似乎没有什么不同。假设您在测试页面上出现 'File not found' 错误,我相信您的 type 命令只是将键发送到远程浏览器的元素。

对于类型为“file”的输入元素,type 命令应首先将文件从本地计算机上传到远程计算机然后透明上传到你的测试页。如果这不起作用,那么主要是您的元素不是类型“file”,或者您使用的实习生版本不支持远程 upload/has 错误。

根据我的说法,如果您有 selenium 独立服务器和使用 remotewebdriver 的 webdriver 设置,它也应该在本地失败。

摘自“https://theintern.github.io/leadfoot/module-leadfoot_Command.html#type”(由 jason0x43 共享)


从1.5开始,如果WebDriver服务器支持远程文件上传,你在本地输入一个文件的路径,该文件将透明上传到远程服务器,远程文件名将改为输入。如果您不想上传本地文件,请改用 leadfoot/Session#pressKeys。


解决方案(对我有用):


示例代码:

function () {
      return this.remote
        .get(require.toUrl('http://www.fileconvoy.com/'))
        .findById('upfile_0')
          // .type('C:\Users\hello\Desktop\documents\doc-sample1.doc')
          .type("//tmp//upload.log")
          .end()
        .findById('readTermsOfUse').click().end()
        .findById('upload_button').click().end()
        .sleep(5000)
    }

------------

conf.js

  capabilities: {
    fixSessionCapabilities: true,
    remoteFiles: true,
    .
    .
    .
  },