【发布时间】:2020-02-27 22:57:04
【问题描述】:
我正在使用以下代码将文件上传到网站的“文件”类型元素。
代码在 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 还是不受支持?
【问题讨论】:
-
您能检查文件上传按钮并在此处发布 HTML 吗?我一直能够将
send_keys指向隐藏的<input type="file">元素,该元素通常出现在Browse...或Upload..按钮下。 -
嗨,克里斯汀,我已将代码添加到主要问题中。我一直在尝试将 sendKeys 用于 id=manual_file_selection 的“文件”元素。这适用于所有浏览器,但 Edge 不允许我使用 sendKeys
-
我添加了一个解决方案,该解决方案使用了一些可能有助于 Edge 识别输入的 JS。我从未见过文件上传在除 Edge 之外的所有浏览器上工作的这个问题,所以这可能会或可能不会真正帮助您。
标签: selenium selenium-webdriver microsoft-edge