Блог вебразработчика
  • ГЛАВНАЯ
  • ПОДПИСКА

Selenium WebDriver: файловые поля ввода (input file)

Сен27
2012
Написал Tatyana

Файловые поля ввода, с точки зрения верстки, — это обычные input-поля, которым присвоен тип «file».

Сам элемент же обычно отображается, как текстовое поле с кнопкой, при нажатии на которую появляется файловый менеджер для отбора имени файла.



В Selenium файловые поля ввода заполняются точно так же, как и обычные текстовые поля. Для того, чтобы загрузить файл используется метод sendKeys(String value), в который передается путь к этому файлу. Путь обязательно должен быть абсолютным:

driver.findElement(By.id("photo"))
		.sendKeys("Z:\\SeleniumExamples\\src\\test\\resources\\photo.png");

или лучше как-то так:

File file = new File("src/test/resources/photo.png");
driver.findElement(By.id("photo")).sendKeys(file.getAbsolutePath());

Файловые поля не нуждаются в очистке перед вводом пути или изменением его значения. Значения перезаписывается автоматически при каждом новом вызове метода sendKeys. Более того, при вызове метода clear() для файлового поля возникнет исключение «WebDriverException: Element must be user-editable in order to clear it».

Заполнение файлового поля проходит в браузере практически незаметно, при этом диалог для выбора файла не открывается.

Своего рода проблему представляют плагины загрузчиков файлов AJAX или JQuery, здесь может быть несколько вариантов развития событий:

  1. Поле ввода появляется после выполнения каких-либо действий (и это уже совсем не проблема, просто заполняем появившееся файловое поле и все);
  2. Файловое поле скрыто внутри плагина, а вместо него работает красивая обертка. В этом случае стоит поискать файловое поле в верстке. Если такое обнаружено, то можно посоветовать сначала сделать его видимым с помощью javascript, а после уже заполнить. Дальнейшее будет зависеть от реализации плагина — возможно нужно будет нажать на какую-нибудь кнопку «Upload» внутри плагина, или просто кликнуть в любом месте страницы и загрузка начнется автоматически. Как сделать скрытый элемент видимым можно найти в статье «Selenium 2 — получить текст невидимых элементов»
  3. Плагин выполнен на флеше, либо полностью реализован с помощью скриптов. Вот тут уже к файловому полю никак не добраться и придется иметь дело с файловым менеджером. Для таких целей лучше использовать сторонние инструменты, например, AutoIt. Сам же WebDriver не может взаимодействовать с такими диалогами, потому что они принадлежат области операционной системе, а не веб-страницы.
  • Нравится
  • Tweet

Опубликовано в Selenium - Помечено Selenium WebDriver
Рассказать всем Twitter Facebook Delicious StumbleUpon E-Mail
← Введение в ORM (Object Relational Mapping)
Краткий обзор возможностей Hibernate ORM →

6 комментариев

  1. Tanya's Gravatar Tanya
    04.12.2013 at 11:45 | Permalink

    А если нет поля value и style, но поле невидимое, как тогда ввести путь в input ?

    • Tatyana's Gravatar Tatyana
      04.12.2013 at 12:50 | Permalink

      То, что поля не видны в html, не значит, что их нельзя использовать. Элемент скорее всего сделан невидимым с помощью css, но значение inline поля style имеет больший приоритет (если только в css не прописано !important). Главное выяснить какое конкретно свойство видимости элемента Вам нужно менять.

      Если же никак не получается сделать поле видимым, используйте AutoIt для заполнения.

      • Tanya's Gravatar Tanya
        05.12.2013 at 07:47 | Permalink

        Спасибо, все получилось.

  2. Yuri's Gravatar Yuri
    05.08.2014 at 11:55 | Permalink

    А какие свойства видимости могут быть? Просто я попробывал сменить display и visibility а толку никакого.

    • Tatyana's Gravatar Tatyana
      05.08.2014 at 12:37 | Permalink

      Эти свойства могут также быть применены к одному из родителей элемента, поэтому нет никакого эффекта. Нужно внимательно изучить верстку страницы

  3. AlexT's Gravatar AlexT
    22.10.2014 at 14:15 | Permalink

    @FindBy(xpath = «//input[@name=’icon’]»)
    WebElement element;

    element.sendKeys(new File(«resources/icon.jpg»).getAbsolutePath());

Свежие записи

  • WebDriver и SSL Untrusted certificate
  • Видеозапись выполнения тестов Selenium
  • Selenium WebDriver: basic авторизация
  • BrowserMob Proxy + Selenium: автоматизация сбора данных о производительности
  • Hibernate 4: UserType пользовательский тип данных (часть 2)

Поиск

Рубрики

  • Hibernate ORM
  • SEO
  • Разное
  • Тестирование
    • JUnit
    • Selenium
    • Thucydides

Метки

Actions AJAX Alert AutoIt ChromeDriver Exceptions ExpectedConditions FindElement FirefoxDriver Hibernate InternetExplorerDriver Java Javascript Jenkins JUnit4 Maven PageFactory Page Object RemoteWebDriver Select Selenium IDE Selenium Server Selenium WebDriver switchTo Thucydides WebDriverWait XPath Автоматизированное тестирование база данных заработок в сети сеть Интернет скорость продвижения сайта статейное продвижение услуги продвижения

Реклама


Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.

Блог вебразработчика
Функциональное тестирование и продвижение сайтов

Яндекс.Метрика