【问题标题】:Selenium how to upload files to Microsoft EdgeSelenium 如何将文件上传到 Microsoft Edge
【发布时间】: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 指向隐藏的&lt;input type="file"&gt; 元素,该元素通常出现在Browse...Upload.. 按钮下。
  • 嗨,克里斯汀,我已将代码添加到主要问题中。我一直在尝试将 sendKeys 用于 id=manual_file_selection 的“文件”元素。这适用于所有浏览器,但 Edge 不允许我使用 sendKeys
  • 我添加了一个解决方案,该解决方案使用了一些可能有助于 Edge 识别输入的 JS。我从未见过文件上传在除 Edge 之外的所有浏览器上工作的这个问题,所以这可能会或可能不会真正帮助您。

标签: selenium selenium-webdriver microsoft-edge


【解决方案1】:

根据您的错误消息,我会尝试一些 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);

值得一试。让我知道这是否有帮助。

【讨论】:

  • 克莉丝汀你是个天才——它确实奏效了:D 不幸的是,我不能将此标记为答案,因为我没有足够高的分数。非常感谢您的帮助。
猜你喜欢
  • 2016-08-02
  • 2021-05-10
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 2015-09-14
相关资源
最近更新 更多