Selenium 如何将文件上传到 Microsoft Edge
Selenium how to upload files to Microsoft Edge
我正在使用以下代码将文件上传到网站的 'file' 类型元素。
该代码在 Firefox、Chrome 和 Safari 中运行良好。
然而,当我 运行 针对 Edge 的代码未上传文件时
driver.setFileDetector(new LocalFileDetector());
selectFile.sendKeys(path);
报错:
命令失败,因为指定的元素不是指针或键盘可交互的。
如果我尝试像这样使用 Javascript:
document.getElementById('manual_file_selection').sendKeys(path)
我明白了:对象不支持 属性 或方法 'sendKeys'
如前所述,相同的代码在 Chrome、Firefox 和 Safari 中运行良好,所以我不明白。
这是文件上传按钮背后的代码:
<div class="jsx-parser">
<div data-xxxxx-element="manual-file-selection">
<div class="button__container">
<label for="manual_file_selection" class="button button--primary" data-dragging="false" data-xxxxx-element="manual-file-selection--label">
<input id="manual_file_selection" type="file" accept="image/jpeg,image/png" data-xxxxx-element="manual-file-selection--input">
<span>Select File</span>
</label>
</div>
</div>
</div>
有人使用 Selenium 将文件上传到 Edge 成功了吗?或者它是否不受支持?
根据您的错误消息,我会试一试 Javascript。这有点 hacky,因为我们执行 JS 以显示隐藏的 input
元素,然后将密钥发送给它,但我过去曾成功过。
// 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);
值得一试。让我知道这是否有帮助。
我正在使用以下代码将文件上传到网站的 'file' 类型元素。
该代码在 Firefox、Chrome 和 Safari 中运行良好。
然而,当我 运行 针对 Edge 的代码未上传文件时
driver.setFileDetector(new LocalFileDetector());
selectFile.sendKeys(path);
报错: 命令失败,因为指定的元素不是指针或键盘可交互的。
如果我尝试像这样使用 Javascript:
document.getElementById('manual_file_selection').sendKeys(path)
我明白了:对象不支持 属性 或方法 'sendKeys'
如前所述,相同的代码在 Chrome、Firefox 和 Safari 中运行良好,所以我不明白。
这是文件上传按钮背后的代码:
<div class="jsx-parser">
<div data-xxxxx-element="manual-file-selection">
<div class="button__container">
<label for="manual_file_selection" class="button button--primary" data-dragging="false" data-xxxxx-element="manual-file-selection--label">
<input id="manual_file_selection" type="file" accept="image/jpeg,image/png" data-xxxxx-element="manual-file-selection--input">
<span>Select File</span>
</label>
</div>
</div>
</div>
有人使用 Selenium 将文件上传到 Edge 成功了吗?或者它是否不受支持?
根据您的错误消息,我会试一试 Javascript。这有点 hacky,因为我们执行 JS 以显示隐藏的 input
元素,然后将密钥发送给它,但我过去曾成功过。
// 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);
值得一试。让我知道这是否有帮助。