Драйвер Firefox Gecko не может нажать на элемент ввода с типом «файл» - PullRequest
0 голосов
/ 19 сентября 2018

Я автоматизирую страницу с двумя кнопками загрузки файлов во всех браузерах.Вот фрагмент кода:

WebElement thumbnailClick = driver.findElement(By.id("PageForm_tile_src"));
jse.executeScript("scroll(0, 250)");
thumbnailClick.click();

Это нажатие на первую кнопку загрузки, и это прекрасно работает в Chrome, но при попытке запустить драйвер геккона Firefox выдает InvalidArgumentException: Cannot click <input type=file> elements ошибку

Я должен найти эти элементы по идентификатору, так как на этой странице есть несколько кнопок загрузки.Зачем Firefox отклонять этот клик, если это легко сделать вручную и работает в любом другом браузере?

Добавление HTML элемента:

<input name="PageForm[tile_src]" id="PageForm_tile_src" type="file">

1 Ответ

0 голосов
/ 20 сентября 2018

Firefox (через geckodriver) ведет себя правильно, а Chrome - нет.Спецификация W3C WebDriver в описании алгоритма Element Click в разделе 14.1 , шаг 3 гласит: «Если элемент является элементом ввода в состоянии загрузки файла 1 возвращает ошибку с недопустимым аргументом кода ошибки. ”

Когда команда Chromium завершит соответствие спецификациям для chromedriver, она будет вести себя как geckodriver, IEDriverServer.exe, текущая предварительная версия реализации драйвера Microsoft для Edge,и только что выпущенная Apple реализация драйвера для Safari 12. Все ведут себя.

Чтобы успешно загружать файлы с помощью WebDriver, вы должны использовать метод sendKeys с полным путем к файлу, который вы хотите загрузить.

1 Ed.примечание: «В состоянии загрузки файла» - это язык спецификаций для элемента <input type="file">.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...