0

我正在使用 webdriverio v5 在 sauceLabs 中运行自动化测试。我想运行一个将文件上传到 msedge 的测试。下面是相同的示例代码。

const path = require('path');
const filePath = path.join(__dirname, 'path/to/your/file');
const remoteFilePath = browser.uploadFile(filePath);
$('upload file input selector').setValue(remoteFilePath);

这段代码适用于 chrome 和 firefox,但是当我尝试在中运行相同的代码msedgeError: The uploadFile command is not available in msedge。似乎 browser.uploadFile 仅适用于 chrome。我尝试了其他各种方法,但这些解决方案主要在本地而不是在像 sauceLabs 这样的远程服务器上工作。

是否有任何替代方法browser.uploadFile或任何解决方法可用于在 msedge 浏览器中上传文件?

4

1 回答 1

1

看起来出于安全原因,browser.uploadFile 不适用于 IE 和 Edge 浏览器。

我建议您尝试使用下面的代码示例进行测试。

它首先找到文件上传元素,然后使用 sendkeys() 设置控制路径值。

// fetch the element
WebElement input = driver.findElement(By.XPath("//input[@type='file']"));
// send file path keys
input.sendKeys(path);

如果问题仍然存在,那么您可以尝试以下示例。

// fetch the element
WebElement input = driver.findElement(By.XPath("//input[@type='file']"));

// run JS to reveal the element
JavascriptExecutor executor = (JavaScriptExecutor)driver;
executor.executeScript("arguments[0].style.display = 'block';", input);

// send file path keys
input.sendKeys(path);

参考:

Selenium 如何将文件上传到 Microsoft Edge

注意:您可能需要将上述代码转换为您的开发语言。

于 2020-03-17T06:33:02.483 回答