使用 Protractor 使用 browserstack 上传本地文件

Uploading local files with browserstack using Protractor

我有一个简单的脚本,它试图将文件直接上传到我的应用程序。此测试在我的本地设置 (win10 + chrome 73) 上运行良好,但是当通过 browserstack-local 运行ning 时(据我所知,它与我的本地计算机建立了安全连接)我收到以下信息错误。

Failed: invalid argument: File not found : C:\correctPath/correctFileName.zip
[Chrome #01]         (Session info: chrome=73.0.3683.86)
[Chrome #01]         (Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Windows NT 10.0.15063 x86_64) (WARNING: The server did not provide any stacktrace information)

我正在打印以下确认信息,因此我知道路径是正确的。

产生

[Chrome #01] File Path: C:\correctPath/correctFileName.zip
[Chrome #01] File exists: true

这些是在失败发生之前打印的。

注意:我可以运行测试不需要上传文件的。

我是 browserstack 的新手,所以我可能缺少一些简单的东西。如有任何帮助或建议,我们将不胜感激。


答案:

科里用他的回答为我指明了正确的方向。我需要在我的配置文件中的 onPrepare 添加以下两行,我现在可以正常上传了。

const remote = require('selenium-webdriver/remote');
await browser.setFileDetector(new remote.FileDetector());

参见 "Local file detector" 部分:https://seleniumhq.github.io/docs/remote.html

Local file detector

The Local File Detector allows the transfer of files from the client machine to the remote server. For example, if a test needs to upload a file to a web application, a remote WebDriver can automatically transfer the file from the local machine to the remote web server during runtime. This allows the file to be uploaded from the remote machine running the test.