Как нажать <input type = file> в разных браузерах, используя Selenium Webdriver? - PullRequest
24 голосов
/ 15 марта 2012

Я работаю с диалогом выбора файлов, используя Selenium 2 - WebDriver.Хотите верьте, хотите нет, но моя проблема не связана с выбором файлов в ОС.Эта часть, которую я могу обработать!

Проблема заключается в том, что Selenium правильно нажимает кнопку «Выбрать файл».Поскольку исходный HTML-код просто <input type='file'>, браузер определяет, как отобразить его в виде поля и кнопки.В результате расположение и наименование кнопки меняется в зависимости от браузера.У меня это работает в Chrome, но только потому, что Chrome помещает кнопку в крайнее левое положение, и Selenium по умолчанию щелкает там.

Есть идеи?Мне не ясно, действительно ли вход этого типа действительно ориентирован из DOM ...

Ответы [ 3 ]

40 голосов
/ 16 марта 2012

Правильный способ загрузки файла в любой ОС -

  1. Найдите элемент <input type='file'>. Вам не нужно беспокоиться о различных реализациях и точном позиционировании. Просто найдите элемент, например, по xpath //input[@type='file']
  2. sendKeys() или type() (или любой другой метод записи текста в элементы на вашем языке) путь к файлу для этого элемента ввода.

Пример кода Java:

// find the input element
WebElement elem = driver.findElement(By.xpath("//input[@type='file']"));
// 'type' the file location to it as it were a usual <input type='text' /> element
elem.sendKeys("C://path/To/File.jpg");

Это работает на всех ОС и браузерах в WebDriver.

4 голосов
/ 06 июля 2013

Точно такая же ситуация с элементом <input type='file'>.В моем случае он создан с использованием ExtJS.

Я не знаю, решили ли вы этот вопрос или нет, но позвольте мне предоставить мое решение.

JavascriptExecutor executor = (JavascriptExecutor)getDriver();
executor.executeScript("arguments[0].click();", element);

Ни sendKeys (), ни type() ни использование ActionBuilder не помогло мне.Единственный JavascriptExecutor работает как шарм.

0 голосов
/ 26 октября 2013

Я протестировал со следующим элементом:

<INPUT style="WIDTH: 550px; background-color:yellow" type="file">

Результаты:

  • IE: двойной щелчок в любой области элемента, «Выбрать файл»"диалог будет происходить;
  • Firefox: нажмите в любой области элемента, появится диалог «Выбор файла».
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...