我正在使用webdriverio v5在stodLabs中运行一个自动化测试。我想运行一个测试,它正在上传一个文件到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,但当我尝试在msedge
中运行相同的代码时,会给出Error: The uploadFile command is not available in msedge
。看起来browser.uploadFile只适用于chrome。我尝试过其他各种方法,但这些解决方案主要在本地服务器上运行,而不是在像炖锅实验室这样的远程服务器上运行。
是否有browser.uploadFile
的替代方案或任何可用于在msedge浏览器中上传文件的变通方法?
出于安全原因,browser.uploadFile不可用于IE和Edge浏览器。
我建议您尝试使用下面的代码示例进行测试。
它首先找到文件上传元素,然后使用sendkey((设置控件中的路径值。
// 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
注意:您可能需要将上述代码转换为您的开发语言。