Selenium как загружать файлы в Microsoft Edge

Я использую следующий код для загрузки файлов на веб-сайт в элемент типа "файл".

Код отлично работает в 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>

Кто-нибудь успешно загружал файлы в Edge с помощью Selenium или он не поддерживается?

1 ответ

Решение

Основываясь на ваших сообщениях об ошибках, я бы попробовал использовать Javascript. Это немного взломано, поскольку мы выполняем JS, чтобы выявить скрытыеinput element, а затем отправьте ему ключи, но в прошлом у меня был успех.

// 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);

Стоит попробовать. Дайте мне знать, поможет ли это вообще.

Другие вопросы по тегам