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);
Стоит попробовать. Дайте мне знать, поможет ли это вообще.