所以,我一直试图测试输入类型="文件"使用Browserstack和Intern.js,但我一直得到一个"找不到文件"错误,因为Browserstack在我的计算机中搜索该文件。
我知道Browserstack具有上传/下载功能,但是根据他们的文档我还没有完全掌握如何使用它。
答案 0 :(得分:1)
使用type
方法将本地系统上文件的路径输入到输入中。实习生将文件上传到远程系统,然后在远程浏览器的文件输入中选择新上传的文件。
return remote
.findElementById('file-input')
.type('/tmp/somefile.txt') <-- Path on the local system
答案 1 :(得分:0)
这些问题似乎没有什么不同。假设您的测试页面上出现“找不到文件”错误,我相信您的类型命令只是将密钥发送到远程浏览器的元素。
对于“文件”类型的输入元素,类型命令应首先将文件从本地计算机上传到远程计算机,然后透明地上传到测试页。如果这不起作用,那么主要是你的元素不是“文件”类型,或者你使用的实习生版本不支持远程上传/有bug。
根据我的说法,如果你有使用remotewebdriver的 selenium独立服务器和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,
.
.
.
},