Selenium, как загружать файлы в Microsoft Edge - PullRequest
0 голосов
/ 01 ноября 2019

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

Код отлично работает в Firefox, Chrome и Safari.

Однако при запускекод против Edge, файл НЕ загружен

driver.setFileDetector(new LocalFileDetector());
selectFile.sendKeys(path);

Эта ошибка сообщается: команда не выполнена, поскольку указанный элемент не взаимодействует с указателем или клавиатурой.

Если я пытаюсь использовать Javascript, как этот:

document.getElementById('manual_file_selection').sendKeys(path)

Я получаю это: объект не поддерживает свойство или метод 'sendKeys'

Как уже говорилось, тот же код отлично работает в Chrome, Firefox и Safari, поэтому я не понимаюit.

Это код, лежащий в основе кнопки загрузки файла:

<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 Ответ

0 голосов
/ 01 ноября 2019

На основании ваших сообщений об ошибках я бы попробовал Javascript. Это немного глупо, так как мы выполняем 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);

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

...