Собираем данные с веб-страниц Java + Selenium


Содержание

Примеры использования интерфейсов Java и Selenium Webdriver

В данном уроке речь пойдет о следующих темах:

  • Пример создания интерфейса Java
  • Перегрузка метода интерфейса
  • Использование типа интерфейса
  • Down Casting (приведение к типу)

Как и раньше, нам понадобится основной проект и его классы:

Интерфейс Page имеет следующий код:

Класс GoogleHomePage:

Класс GoogleSearchResultPage:

И тестовый класс TestClass:

Начну краткое объяснение кода…

Для объявления интерфейса Page используется ключевое слово interface. Он имеет один метод search типа GoogleSearchResultPage, который не имеет реализации, что и отличает его от простого класса или абстрактоного класса.

Все классы, которые реализуют этот интерфейс, – должны обязательно выполнить метод search.

У нас два класса реализуют интерфейс – GoogleHomePage и GoogleSearchResultPage. Для этого используется ключевое слово implements.

К тому же, если класс реализует интерфейс, то он обязательно должен реализовать с перегрузкой и все объявленные в нем методы.

Оба класса перегружают метод search. Например,

Как можно увидеть, для перегрузки используется аннотация @Override.

Обратите внимание на интересную реализацию методов searchOnGoogleHomePage, searchOnSearchResultPage и getSearchResultStatistics. У всех них объявляется объект типа интерфейса Page, например,

Для его создания используется конструктор разных классов и основная цель этого объекта – это вызов перегруженных методов search.

Более интересной является запись:

В скобках оператора if используется ключевое слово instanceof, которое проверяет, относиться ли объект page к типу GoogleSearchResultPage.

Если условие выполняется (true), то ранее созданной переменной типа String searchResultStatistics присваивается значение, возвращаемое методом getResultSet в классе GoogleSearchResultPage. Операция

Извлечение данных таблицы с веб-страницы с использованием веб-редактора Selenium

Использование Selenium webdriver (в Eclipse) для автоматизации веб-приложения, однако теперь требуется, чтобы данные таблицы отображались на одной из html-страниц. Я попытался с решениями данных here, here и несколько других сайтами, однако наш веб-страница, кажется, немного другим способом отображения таблицы

Пытался получить значение, используя имена классов ДИВ, как String Text = driver.findElements(By.xpath(«//div[@ ]//tr»)).get(0).getText(); однако он не работает, индекс из исключения исключений

Создан 02 дек. 15 2015-12-02 05:58:03 Vinod

Что именно вы пытаетесь получить? ‘WW_SALES’ или’ APJ’? – JRodDynamite 02 дек. 15 2015-12-02 06:37:36

@JasonEstibeiro: Таблица в целом – Vinod 02 дек. 15 2015-12-02 08:33:11

2 ответа

Я не уверен, но, вероятно, ваш массив webElements пуст, поэтому вы получаете исключение Index out of bounds.

Если вы пытаетесь получить значение из всего WW_SALES строки я полагаю, что find_elements должен пинту из родительского DIV — класс = «AG-рядный AG-рядный даже аги-рядный уровень 0»

Это только мое предположение основано на описании и прикрепленном изображении.

Создан 02 дек. 15 2015-12-02 07:35:52 Witold Krak

Из того, что я вижу, вы, похоже, создали пользовательскую таблицу. И из HTML выдержки в прилагаемом изображении, структура что-то вроде:

Но ваш XPATH при условии, что у вас есть строки таблицы (и я потом гадать, может быть ячейки таблицы):

, из-за чего ваш массив будет пустым (достаточно смешно, чтобы вы не получили исключение NoSuchElement , возможно, есть теги tr где-то в вашем html-дереве).

Теперь я не уверен, какие данные вы пытаетесь извлечь из этой таблицы, но лучше всего попытаться получить все строки на основе атрибута class и для каждой строки, чтобы получить все столбцы на основе данных on, опять же, атрибут class (или вы можете использовать атрибут col ).

EDIT: Чтобы получить все элементы, вы можете взять все строки, а затем для каждой строки получить все данные столбца:

Вы также можете хранить ваши данные в двунаправленный массив (или любой такого рода), а затем получить доступ к данным на основе номера строки и столбца.

Создан 02 дек. 15 2015-12-02 08:05:24 Cosmin

Я пытаюсь прочитать все данные таблицы, поскольку мне нужно сравнить эти данные с некоторыми другими данными таблицы с одинаковой структурой. – Vinod 02 дек. 15 2015-12-02 08:35:14

@ Vinod Обновлен мой ответ. Таким образом, у вас будет список, содержащий все данные из вашей таблицы. – Cosmin 02 дек. 15 2015-12-02 09:28:33

Selenium / WebDriver

автоматизация веб-приложений через браузер

Selenium 2.0 и WebDriver

Примечание: Данный раздел не завершен. В настоящий момент раздел находится в стадии написания. Мы уверены в том, что сведения, приведенные здесь, точны. Но мы будем постепенно дополнять этот раздел. При этом мы также будем редактировать и рецензировать данный текст.

Возможности Selenium 2.0

Selenium 2.0 содержит множество замечательных возможностей и улучшений по сравнению с Selenium 1. Самое главное изменение новой версии — это интеграция WebDriver API, альтернативного, упрощенного программного интерфейса, который избавлен от недостатков, характерных для Selenium 1. Цель создания WebDriver API — разработать объектно-ориентированный API, поддерживающий большее количество браузеров и лучше решающий проблемы тестирования современных веб-приложений.

Примечание: Описание новых возможностей Selenium 2.0 будет добавлено позднее. А пока мы отсылаем читателя к официальному анонсу в блоге.

Когда надо использовать Selenium Server


В зависимости от того, каким образом вы намереваетесь использовать Selenium, вам может потребоваться Selenium Server. Если вы будете использовать исключительно WebDriver API, то он вам не пригодится. Selenium Server предоставляет функциональность Selenium RC, тем самым обеспечивая обратную совместимость с Selenium 1.0. Поскольку WebDriver использует принципиально иной подход к взаимодействию с браузером, для его работы Selenium Server не нужен. WebDriver напрямую обращается к браузеру, используя родные для него средства автоматизации. В отличие от него, Selenium RC нуждается в использовании Selenium Server для внедрения специального JavaScript кода в браузер, а также для трансляции сообщений клиентской библиотеки Selenium для языка, на котором написана ваша тестовая программа, в команды вызывающие JavaScript-команды, которые, в свою очередь, автоматизируют действия с тестируемым приложением в браузере. Проще говоря, если вы используете только WebDriver, то Selenium Server вам не нужен.

Другой причиной, почему вам может потребоваться Selenium Server, может быть использование Selenium Grid для распределенного выполнения тестов. И наконец, он вам понадобится, если вы используете WebDriver поверх Selenium (реализация WebDriver API, использующая технологию Selenium 1 для взаимодействия с браузером). Эти темы рассмотрены подробнее далее в этой главе.

Создание проекта для разработки тестов с использованием WebDriver

Действия, необходимые для создания программного проекта, позволяющего разрабатывать тесты с использованием Selenium, зависят от того, на каком языке программирования и с помощью каких сред разработки вы собираетесь это делать.

Самый простой способ для этого языка программирования — использовать Maven для создания проекта. Maven автоматически загрузит клиентскую библиотеку Selenium 2.0 для языка Java вместе со всеми зависимостями и создаст проект, используя файл pom.xml (конфигурационный файл проекта). После того, как вы это сделали, вы можете импортировать проект в предпочитаемую вами среду разработки (IDE) — IntelliJ IDEA или Eclipse.

Сперва создайте директорию, в которой будут находиться все файлы вашего проекта. Затем, чтобы воспользоваться Maven, вам потребуется файл pom.xml, который может быть создан любым текстовым редактором. Мы не будем вдаваться в подробности работы Maven или устройства файла pom.xml, так как это хорошо описано в источниках информации, посвященных этому инструменту. Ваш файл pom.xml будет выглядеть как в приведенном ниже примере. Файл должен находится в директории вашего проекта.

Убедитесь в том, указана последняя версия Selenium. На момент написания указанная в примере версия является последней, однако новые релизы Selenium 2.0 выходят часто. Сверьтесь с информацией, приведенной на веб-странице, где указаны настройки Maven для текущей версии Selenium, и соответствующим образом измените зависимость ( ).

Теперь в командной строке перейдите (cd) в директорию вашего проекта и запустите Maven следующим образом:

Эта команда загрузит Selenium и все зависимости, а также добавит их в ваш проект.

Наконец, импортируйте созданный проект в в предпочитаемую вами среду разработки. Для тех, кто делает это впервые, мы написали инструкцию.

Начиная с версии 2.2.0 Selenium поставляется как набор подписанных (signed) DLL-библиотек и всех библиотек, от которых зависит Selenium. До версии 2.2.0 все DLL-библиотеки Selenium были не подписаны. Для включения Selenium в ваш проект просто скачайте последнюю версию zip-архива selenium-dotnet с сайта https://code.google.com/p/selenium/downloads/list.

Если вы используете Windows Vista или более новую, вам сначала следует разблокировать zip-архив: щелкните правой кнопкой мыши на архиве, выберите “Свойства”, затем “Разблокировать” и нажмите “ОК”.

Извлеките содержимое архива и добавьте ссылки на разархивированные DLL-библиотеки в ваш проект в Visual Studo или в любой другой используемой вами IDE.

Selenium также распространяется в виде набора пакетов NuGet:

Python

Если вы используете Python для автоматизации тестирования, значит, вероятнее всего, вы уже знакомы с тем, как происходит разработка приложений на нем. Для добавления Selenium к вашему окружению языка Python выполните следующую команду в командной строке:

Обучение языку Python выходит за рамки данного руководства. К счастью, существует множество специализированных ресурсов, да и ваши программисты могут вам помочь в этом деле.

Если вы используете Ruby для автоматизации тестирования, значит, вероятнее всего, вы уже знакомы с этим языком программирования. Для добавления Selenium к вашему окружению языка Ruby выполните следующую команду в интерфейсе командной строки:

Обучение языку Ruby выходит за рамки данного руководства, однако существует множество источников информации о Ruby и, вероятно, вам смогут помочь работающие с вами разработчики.

В настоящее время Selenium 2.0 не поддерживает Perl. Если у вас есть вопросы или вы хотите предложить помощь в разработке поддержки данного языка, пожалуйста, напишите нашим разработчикам.

В настоящее время Selenium 2.0 не поддерживает PHP. Если у вас есть вопросы или вы хотите предложить помощь в разработке поддержки данного языка, пожалуйста, напишите нашим разработчикам.

Переход с Selenium 1.0

Для тех, у кого уже есть наборы тестов, написанных с использованием Selenium 1.0, мы предлагаем ряд рекомендаций по тому, как перенести существующий код на Selenium 2.0. Саймон Стюарт (Simon Stewart), ведущий разработчик Selenium 2.0, написал статью по этому поводу, которую вы можете найти в приложении “Миграция с Selenium RC на WebDriver”.

Начало работы с Selenium WebDriver

WebDriver – это инструмент для автоматизированного тестирования веб-приложений, в частности, для проверки того, что приложение работает в соответствии с ожиданиями. Этот инструмент задумывался таким образом, чтобы иметь удобный программный интерфейс (API), позволяющий повысить читаемость и упростить поддержку тестов, более легкий для изучения и понимания, чем Selenium RC (1.0) API. WebDriver API не привязан ни к каким тестовым фреймворкам, что позволяет использовать любые фреймворки модульного тестирования, равно как и старый добрый метод “main”.

Этот раздел поможет ознакомиться с азами WebDriver API и сделать первые шаги в его использовании. Начните с создания WebDriver-проекта, если вы этого еще не сделали, как описано в предыдущем разделе, Создание проекта для разработки тестов с использованием WebDriver .

Когда вы создадите проект, вы увидите, что WebDriver ведет себя как обычная библиотека: он полностью самодостаточен и, как правило, вам не нужно помнить о необходимости запуска дополнительных процессов или запуска инсталляторов перед его использованием, в отличие от прокси-сервера Selenium RC.

Теперь вы готовы начать писать код. Посмотрите следующий пример, который запускает поиск слова “Cheese” в Google и затем печатает заголовок результирующей страницы в консоль.

В следующих разделах вы узнаете о том, как использовать WebDriver для таких задач, как переход вперед и назад по истории вашего браузера, а также для тестирования веб-сайтов содержащих фреймы и открывающих несколько окон. А также мы рассмотрим и обсудим ещё много разных примеров.

Драйверы, входящие в состав WebDriver

WebDriver — это наименование ключевого интерфейса, с использованием которого должны писаться тесты, однако существует несколько реализаций этого интерфейса. В их числе:

Название драйвера Поддерживаемая ОС Класс для создания экземпляра
HtmlUnit Driver Все org.openqa.selenium.htmlunit.HtmlUnitDriver
Firefox Driver Все org.openqa.selenium.firefox.FirefoxDriver
Internet Explorer Driver Windows org.openqa.selenium.ie.InternetExplorerDriver
Chrome Driver Все org.openqa.selenium.chrome.ChromeDriver
Opera Driver
iPhone Driver
Android Driver

Эта таблица находится в состоянии разработки

Следуя по ссылкам в таблице вы найдете больше информации о каждом. Какой из них использовать — зависит от того, что вы хотите сделать. HtmlUnit Driver — лучший выбор с точки зрения скорости, однако он не графический, что означает, что вы не сможете наблюдать за происходящим. Как программист вы можете быть полностью удовлетворены такой функциональностью. Но иногда использование реального браузера может быть весьма полезным, особенно если вы демонстрируете свое приложение или запускаете тесты перед аудиторией. Зачастую это требуется для оценки “надежности” тестов. Различают две ее разновидности. Первая, “реальная надежность”, заключается в соответствии ожидаемой работы тестов действительности. Она может быть измерена и выражена количественно. Вторая, “ощущаемая надежность”, заключается в уверенности наблюдателя в том, что тесты работают, как задумано, и зависит от конкретного человека, его знакомства с тестируемым продуктом, WebDriver и тестовым фреймворком.

Для большей “ощущаемой надежности” вы можете выбрать другой драйвер, такой как Firefox Driver. Его преимущество в том, что он на самом деле отображает веб-страницу в настоящем браузере, и, как следствие, это дает возможность определить, например, позицию элемента на странице или применяемые к нему свойства CSS. Однако эти возможности имеют свою цену — скорость выполнения тестов сильно уменьшается. Когда вы разрабатываете тесты с использованием WebDriver у вас есть возможность выбрать наиболее подходящий драйвер для каждого конкретного теста.

Давайте начнем с самого простого драйвера HtmlUnit Driver:

Команды и операции

Открытие страниц

Первая вещь, которую вы вероятно захотите сделать при помощи WebDriver — открыть веб-страницу. Для этого обычно используют метод “get”:

WebDriver будет дожидаться полной загрузки страницы (то есть момента, когда сработает событие “onload”), перед тем как вернуть управление обратно в ваш тестовый сценарий. Но данный подход может не сработать в случае, если страница выполняет множество AJAX запросов сразу после загрузки (то есть по тому же событию “onload”). В этом случае чтобы дождаться полной загрузки страницы вы можете воспользоваться явными и неявными ожиданиями.

Взаимодействие со страницей

Возможность только лишь попасть на нужную страницу сама по себе не очень ценна. Наибольшую важность имеет возможность взаимодействия со страницей, а точнее, с HTML-элементами этой страницы. Прежде всего, нужно найти интересующий вас элемент. WebDriver предоставляет несколько способ поиска элементов. Например, если у вас есть элемент, определенный в HTML коде следующим образом:

то можно найти его любым из приведенных ниже способов:

Вдобавок к этому, вы можете находить ссылки по их тексту. Но будьте внимательны! Текст ссылки должен быть точным совпадением! Также, будьте внимательны при использовании XPath в WebDriver. В случае, если критериям поиска удовлетворяет несколько элементов, результатом выполнения “findElement” будет первый из них. Если же ничего найти не удалось, будет выдано исключение “NoSuchElementException”.

WebDriver обладает объектно-ориентированным API, все типы элементов страницы представлены единым интерфейсом WebElement. Это означает, что несмотря на то, что функция автозаполнения в IDE показывает вам множество возможных методов, не все они будут иметь смысл или могут быть применены к конкретному найденному элементу. Не волнуйтесь! Если вы вызовете метод, который не имеет смысла (например, setSelected() для элемента “meta”), это приведет к появлению исключения.

Итак, вы нашли элемент страницы, что дальше? Во-первых, вы можете пожелать ввести какой-либо текст в поле ввода:

Вы можете имитировать нажатие стрелок на клавиатуре используя класс “Keys”:

Можно вызывать метод “sendKeys” для любого элемента, что дает возможность тестировать “горячие клавиши”, вроде тех, что есть в GMail. Это дает следующий побочный эффект: когда вы что-то вводите в текстовое поле, оно не будет очищено автоматически. Иначе говоря, то, что вы вводите, будет добавлено к уже имеющемуся тексту. Однако вы легко можете очистить текстовое поле (как однострочное “input type=’text’”, так и многострочное “textarea”):

Идентификация элементов страницы


Примечание: данный раздел нуждается в доработке.

Идентификация элементов в WebDriver происходит при помощи класса “By”. Этот класс реализует все используемые методы поиска.

Использование XPath выражений

WebDriver использует встроенные возможности браузеров везде, где это возможно. Для тех браузеров, в которых встроенная поддержка XPath отсутствует, мы сделали собственную реализацию. Все это может приводить к неожиданным результатам в некоторых случаях, если вы не знаете о различиях в поведении, присущих разным реализациям XPath.

Драйвер Имя атрибута или тега Значение атрибута Встроенная поддержка XPath
HtmlUnit Driver Строчные буквы Так, как в HTML документе Да
Internet Explorer Driver Строчные буквы Так, как в HTML документе Нет
Firefox Driver Не зависит от регистра Так, как в HTML документе Да

Поскольку это несколько абстрактно, рассмотрим пример. Для следующего HTML кода:

эти выражения будут находить следующее количество совпадений:

XPath выражение HtmlUnit Driver Firefox Driver Internet Explorer Driver
//input 1 (“example”) 2 2
//INPUT 2

Иногда HTML элементы не нуждаются в явном указании атрибутов в коде по причине того, что они имеют какое-то стандартное значение по умолчанию. Например: элемент “input” не нуждается в атрибуте “type”, потому что этот атрибут имеет значение по умолчанию “text”. В такой ситуации на практике вы НЕ должны ожидать, что XPath-запрос обнаружит такой неявный атрибут.

Ввод данных — Заполнение полей формы

Мы уже познакомились с тем, как вводить данные в текстовые поля, но как быть с другими элементами? Вы можете использовать метод click для переключения состояния чекбоксов или выбора нужного значения (тег “option”) из списка (тег “select”). Работа со списками не так уж и сложна:

Этот фрагмент кода найдет первый элемент “select” на странице и в цикле переберет все варианты выбора (“option”), выводя с каждой итерацией значение текущего варианта, а также помечая его выбранным. Впрочем, вы наверняка заметили, что это не самый удобный способ работы с элементом “select”. Среди вспомогательных классов WebDriver существует специальный класс “Select”, предоставляющий удобные для работы с такими элементами методы.

Приведенный код найдет первый элемент “select” на странице, отменит текущий выбор (deselect all), а затем выберет элемент с текстом “Эдам”.

После того, как вы заполните поля формы, вы, вероятно, захотите отправить её. Один из способов сделать это — найти и нажать кнопку отправки.

Кроме того, WebDriver позволяет вызывать метод “submit” для произвольного элемента. Если он вызван для элемента, который находится в некоторой форме, WebDriver будет двигаться вверх по DOM до тех пор, пока не найдет форму, включающую его в себя, и затем вызовет для нее “submit”. Если элемент находится не внутри формы, то будет выдано исключение “NoSuchElementException”.

Переключение между окнами и фреймами

Некоторые веб-приложения имеют несколько окон или фреймов. WebDriver способен переключаться между ними при помощи метода “switchTo”:

Все последующие вызовы “driver” будут интерпретированы как адресованные к определенному окну. Но как узнать нужное имя окна? Посмотрите на javascript или ссылку, которые открывают окно:

Также вы можете передать методу “switchTo().window()” дескриптор окна. Так, описанным ниже способом, вы можете обойти все окна:

Также вы можете переключаться в нужные фреймы (или плавающие фреймы):

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

Этот код приведет вас во фрейм с именем “child”, находящийся внутри первого фрейма (индекс 0), вложенного во фрейм с именем “frameName”. Нумерация фреймов идет *с верхнего*.

Всплывающие диалоговые окна

Начиная с 2.0 beta 1, Selenium располагает встроенными средствами для работы с диалоговыми окнами. После выполнения какого-либо действия, приводящего к появлению диалога на экране, вы можете получить к нему доступ следующим образом:

Этот код вернет объект, соответствующий модальному диалогу, открытому на экране в данный момент. При помощи этого объекта вы можете совершить действия “принятия”, “отказа”, получить содержимое окна или даже написать что-либо в поле ввода диалога. Интерфейс Alert одинаково хорошо работает для диалогов alert, confirm и prompt. Для получения дополнительной информации ознакомьтесь с JavaDocs.

Ранее мы говорили о навигации при помощи метода “get” (“driver.get(“http://www.example.com”)”). Как вы, возможно, заметили из предыдущего раздела, WebDriver использует небольшие узкоспециализированные интерфейсы для различных задач (таких как работа с диалоговыми окнами). Поскольку загрузка страницы является основополагающей задачей, осуществляющий её метод находится в основном интерфейсе WebDriver. На самом деле он — всего лишь синоним для следующего кода:

Еще раз: “”navigate().to()”” и “”get()”” делают абсолютно одно и то же. Просто второй короче писать.

Интерфейс навигации (“navigate”) обладает возможностью перемещаться вперед и назад по истории браузера:

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

Куки (cookies)

Давайте рассмотрим, как работать с куки, прежде чем идти дальше. Прежде всего, вы должны работать со страницей, находящейся в домене, для которого эти куки действительны. Если вы хотите установить куки до того, как начнете взаимодействие с веб-сайтом, и если ваша главная страница большая (или долго загружается), вы можете воспользоваться любой другой, меньшей по объему, страницей. Например, это может быть страница 404 (http://example.com/some404page).

Перетаскивание (Drag&Drop)

Вот пример того как использовать класс Actions для перетаскивания (drag&drop).

Подробнее про это рассказано в главе appendix_advanced_user_interactions

Достоинства, недостатки и специфика драйверов

HtmlUnit Driver

На данный момент это наиболее быстрая и легковесная реализация WebDriver. Базируется на технологии HtmlUnit, что, собственно, ясно из названия.

Плюсы

  • Самая быстрая реализация WebDriver.
  • Платформенно-независимое решение, так как используется только Java.
  • Поддержка JavaScript.

Минусы

  • Эмулирует реализацию JavaScript браузера (подробности ниже)

JavaScript в HtmlUnit Driver


Ни один из популярных браузеров не использует движок JavaScript, используемый HtmlUnit (Rhino). Если вы тестируете JavaScript при помощи HtmlUnit, то результаты работы могут существенно отличаться от работы в “настоящих” браузерах.

Когда мы говорим “JavaScript”, на самом деле мы подразумеваем “JavaScript и DOM”. И хотя DOM API и его поведение описаны в стандартах W3C, каждый браузер имеет собственную реализацию со своими особенностями и различиями в поведении, а также в том, как JavaScript взаимодействует с DOM. HtmlUnit имеет впечатляюще полную реализацию DOM и хорошую поддержку JavaScript. Но при этом он ничем не отличается от остальных браузеров: его реализация так же имеет свои особенности и отличия, как от стандарта W3C, так и от наиболее популярных браузеров, не смотря на способность их имитации.

Используя WebDriver, мы стоим перед выбором — либо включить поддержку JavaScript в HtmlUnit Driver, повысив вероятность возникновения связанных с этим проблем, или выключить JavaScript, зная, что все больше и больше сайтов зависят от него. Мы придерживаемся консервативного подхода, и JavaScript по умолчанию выключен в HtmlUnit. Каждый раз перед выходом релиза WebDriver и HtmlUnit мы рассматриваем возможность включить JavaScript по умолчанию, и надеемся, что рано или поздно такой момент настанет.

Включение JavaScript

Если вы не можете ждать, включить JavaScript совсем несложно:

Этот код включит JavaScript, и по умолчанию HtmlUnit Driver будет эмулировать обработку JavaScript браузером Internet Explorer.

Сбор данных с веб-страниц java + selenium HD

Вам интересны «археологические раскопки» содержимого веб-страниц? Тогда вы пришли по адресу! На вебинаре мы напишем свой простой сборщик данных с помощью фреймворка Selenium.

Зачем собирать данные.
Почему не всегда можно работать с готовым API сайта.
Как добраться до нужного элемента.
Чем Selenium облегчает задачу сбора данных.
Как ускорить процесс: headless-режим браузера.
Как подключить Selenium Server «по фен-шуй».
Почему сбор данных – сериал длиною в лог.
Вебинар рассчитан на тех, кто уже представляет, как программировать на Java 8: хотя бы раз подключал к проекту сторонние библиотеки и собирал проекты Maven-ом. Вам также пригодится знакомство с HTML-разметкой и принципами использования CSS-стилей.

Top 100+ вопросов по Selenium, которые чаще всего задают на собеседованиях, с ответами

Здесь собрано более 100 часто задаваемых вопросов, на собеседованиях для тестировщиков по Selenium, с ответами на них. Надеемся, что все желающие получить работу в автоматизированном тестировании, смогут извлечь реальную пользу из нашей статьи.

1) Дайте определение понятия «автоматизированное тестирование»?

Автоматизированное тестирование это проверка программного обеспечения, посредством специализированных инструментов, которая включает проведение таких основных функций и шагов теста: запуск, инициализация, выполнение, анализ и выдача результата.

2) Какие основные преимущества автоматизированного тестирования?

  • Обеспечение максимального покрытия тестами при регрессионном тестировании
  • Быстрое выполнение
  • Повторяемость тест кейсов
  • Сокращение затрат на техническое обслуживание программного обеспечения
  • Экономия времени тестировщиков
  • Возможность исполнения в нерабочее время
  • Исключение «человеческого» фактора
  • Автоматически рассылаемые и сохраняемые отчеты о результатах тестирования

3) Что такое Selenium?

Selenium – инструмент, специально разработанный для проведения автоматизированного тестирования веб-приложений в различных браузерах и на различных платформах. Следует заметить, что не только веб-приложения, а любые рутинные действия, выполняемые в браузере, могут быть автоматически протестированы с помощью Selenium.

4) Основные преимущества Selenium?

  • Seleniumбесплатный и свободный в использовании инструмент. Вам не нужно платить за лицензию для его использования.
  • Кроссбраузернаясовместимость(Firefox, Chrome, Internet Explorer, Safari )
  • Поддержка большого количества языков программирования (Java,C#,Ruby,Python,Pearl)
  • Совместимость со всеми основными платформами (Windows,MacOS,Linux)
  • Огромное количество пользователей и, соответственно, массовая публичная поддержка
  • Возможность автоматизации скриптов
  • Поддержка распределения тестов
  • Регулярные и свежие усовершенствования библиотек

5) Какие компонеты Selenium Вы знаете?

Selenium – набор инструментов для автоматизированного тестирования. Он состоит из таких компонетов:

  • SeleniumIDE(IntegratedDevelopmentEnvironment)– специальный плагинFirefoxдля записи, сохранения и воспроизведения сценариев тестирования веб-страниц.
  • WebDriverинструмент для автоматизации реального браузера, посредством вызова команды браузера, используя при этом роднойAPIдля каждого конкретного браузера. Поддерживает различные языки программирования –Java, .NET,PHPи т.п.
  • Gridпозволяет производить синхронный и контролируемый запуск тестов на разных платформах и девайсах. Также является эффективным инструментом для масштабирования тестов.

6) Какие веб-драйвера API (программного интерфейса приложения) возможно использовать в Selenium?

Список драйверов, использующихся для автоматизации браузера.

7) Есть ли недостатки у Selenium?

Так как Selenium предназначен только для тестирования веб-приложений, то существуют некоторые ограничения в его использовании:

  • Мобильные приложения не могут быть протестированы с помощьюSelenium
  • Десктопные приложения не могут быть протестированы с помощьюSelenium
  • Капча и считыватели бар-кода не могут быть протестированы с помощьюSelenium
  • Для формирования отчётов пользователю нужно использовать внешние инструменты, такие какTestNGилиjUnit.
  • Знания языка программирования необходимо для написания скриптов вSelenium

8) Что такое Selenium IDE?

Selenium IDE – специальный плагин Firefox для записи, сохранения и воспроизведения сценариев тестирования веб-страниц.

9) Что такое Selenese?

Selenese язык написания скриптов в Selenium IDE

10) Какие типы тестирования поддерживаются в Selenium?

В Selenium поддерживаются функциональное и регрессионное тестирование.

11) Какие основные виды локаторов в Selenium?

Основными видами локаторов в Selenium являются: ID, ClassName, Name, TagName, LinkText, PartialLinkText, Xpath, CSS Selector, DOM.

12) Какие инструменты автоматизированного тестирования могут использоваться для пострелизной валидации продукта непрерывной интеграции?

Инструменты автоматизированного тестирования, которые могут быть использованы для этой цели: CruiseCont, Hudson, Jenkins, Quick Build.


13) Объясните значение «assertion» в Selenium и назовите основные его основные типы?

«Assertion» используется как точка верификации. Оно подтверждает, что приложение соответствует ожиданиям. Его основные типы: assert”, “verify” и “waifFor”.

14) Объясните разницу между командами «assert» и «verify»?

Обе осуществляют проверку того, является ли данное значение истинным или ложным. В отличие от assert“, “verify не остановит исполнение тест кейса в случаи ошибки.

15) Что такое Xpath?

Xpath – декларативный язык запросов к элементам XML или XTHML документа. Осуществляет навигацию по документу на основе его логической структуры и иерархии.

16) Что такое Absolute XPath?

Absolute XPath способ прямого нахождения элемента. У него имеется существенный недостаток. Если в пути элемента произойдут любые изменения, то его нахождение станет невозможным. Пример Absolute XPath -html/body/div[3]/div/div[1]/div/div/div[1]/div/input.

17) Что такое Relative XPath?

Relative Xpath обозначает, что пользователь может начать путь из середины HTML DOM структуры, и нет необходимости в написании длинного Xpath. Пример Relative Xpath – //input[@ >

18) В чём разница между single slash (/) и double slash (//) в XPath?

Single slash (/) используется для создания пути элемента из самого корневого узла.

Double slash (//) используется для создания Relative XPath, что даёт возможность начать путь с любого места в документе.

19) Как, основываясь на разных локаторах, проверить веб-элементы?

Firebug, специальный плагин для Firefox, предоставляет различные средства разработки для отладки приложений. Firebug используется для проверки веб-элементов по таким атрибутам как: id, class, name и т.п.

20) Какие языки программирования поддерживает Selenium WebDriver?

Java, C#, Python и Ruby поддерживаются напрямую. Также существуют специальные имплементации для PHP и Perl WebDriver.

21) Как запустить браузер в Selenium WebDriver?

Нужно создать экземпляр драйвера конкретного браузера:

22) Какие существуют драйвера для мобильного тестирования, поддерживаемые Selenium WebDriver?

Драйвера для мобильного тестирования, поддерживаемые Selenium WebDriver: AndroidDriver, IphoneDriver, OperaMobileDriver.

23) Объясните принципиальное различие между XPath и CSS селектором.

С помощью CSS селектора мы можем перемещаться вниз документа, используя XPaths, мы перемещаемся вверх по документу.

24) Как можно определить располагается ли элемент на экране?

Существуют различные методы, с помощью которых, осуществляется проверка отображения элементов на экране: isDisplayed(), isEnabled(), isSelected(). Такого рода элементами могут быть кнопки, дроп боксы, чекбоксы, ярлыки, переключатели и т.п.

25) Объясните разницу между командами “type and typeAndWait“.

Команда type используется для автоматизации набора на клавиатуре значений в текстовом поле веб-приложения. Также может быть использована для выбора значений из поля со списка.

Команда typeAndWait используется когда ввод текста завершён, и страница приложения перезагружается.

26) Каким образом пользователь может получить доступ к тексту веб-элемента?

Пользователь может извлечь текст веб-элемента с помощью команды get. Для этого не требуется никаких специальных параметров, просто происходит возврат строкового значения. Например,

27) Как очистить текстовое поле?

Текст, написанный в текстовом поле, может быть удалён с помощью метода clear().

28) Как проверить чекбокс в Selenium?

Метод click() можно использовать как для проверки чекбокса, так и для проверки кнопок и переключателей.

29) Как убедиться в том, отмечен ли чекбокс/переключатель или нет?

Метод isSelected() используется для того, чтобы убедиться, отмечен ли чекбокс/переключатель или нет. Например

30) Какой альтернативный способ кликнуть на кнопку «login»?

Метод submit() может быть использован в качестве альтернативы клику на кнопку «login» , но только в том случае, если attribute type=submit.

31) Как выбрать значение из выпадающего списка?

Класс Select используется для выбора значений из выпадающего списка.

32) Объясните разницу между командами «close» and «quit».

driver.close() используется для закрытия текущей вкладки браузера.

driver.quit() используется для всех вкладок браузера.

33) Объясните разницу между методами setSpeed() и sleep().

Каждый из этих методов откладывает время исполнения шагов тест кейса. Основное различие между ними состоит в том, что setSpeed() откладывает время исполнения перед каждой операцией Selenium, а thread.sleep() сделает такое только один раз.

  • thread.sleep(5000)- Время ожидания составит 5 секунд (5000 мс) . Такое произойдёт только один раз, согласно данной команде в том месте, где она прописана.
  • selenium.setSpeed(“5000”)- В этом случае время ожидания также составит 5 секунд (5000 мс). Но такое будет происходить с каждой командой, упомянутой вsetSpeed.

34) Какие Вы знаете команды навигации в Selenium?


  • navigate().back()возвращает пользователя на предыдущую страницу из истории браузера. Пример:driver.navigate().back();
  • navigate().forward()позволяет пользователю перейти на следующую страницу согласно истории браузера. Пример:driver.navigate().forward();
  • navigate().refresh()используется для обновления страницы браузера. Пример: driver.navigate().refresh();
  • navigate().to()даёт возможность пользователю открыть новое окно в браузере и переходить по заданномуURL. Пример:

35) Объясните разницу между командами «findElement()» и «findElements()»?

Обе позволяют пользователю найти элементы на текущей веб-странице, которые имеют соответствующие указанные значения локаторов.

Если Вы используете findElement(), извлечён будет только первый элемент с соответствующим значением. Например:

Если Вы используете findElements(), извлечены будут все элементы с соответствующими значениями. Например:

36) Можно ли с помощью Selenium управлять всплывающими окнами Windows?

Это невозможно, так как Selenium поддерживает тест кейсы только для веб-приложений.

37) Как можно управлять всплывающими окнами веб-приложений посредством Selenium?

Существуют такие методы эффективного управления всплывающими окнами (поп-апами) веб-приложений посредством Selenium :

  • stringgetText()возвращает текст, отображаемый в окне предупреждения
  • voidaccept()кликает на кнопку “Ok”, как только появляется всплывающее окно
  • voiddismiss()кликает на кнопку “Cancel”, как только появляется всплывающее окно
  • voidsendKeys(StringstringToSend)вводит в окне предупреждения заданный шаблон строки.

38) Как обновить страницу браузера с помощью Selenium?Список команд Selenium для обновления страницы браузера:

39) Как можно увеличить окно браузера с помощью Selenium?

Команда driver.manage().window().maximize() используется для увеличения окнао браузера с помощью Selenium.

40) Как можно определить значение различных атрибутов элемента таких как: name, class, value?

Метод sing getAttribute(“<attributeName>”) используется для определения значений различных атрибутов элемента.

41) Можно ли удалить cookies с помощью Selenium?

Команда driver.manage().deleteAllCookies() используется для удаления cookies.

42) Как совершить правый клик с помощью Selenium WebDriver?

Для того чтобы совершить правый клик, используется класс Actions:

43) Как совершить перетаскивание (drag and drop) с помощью Selenium WebDriver?

Для того чтобы совершить перетаскивание (drag and drop), используется следующий класс действий:

44) Как проверить виден ли элемент на странице или нет?

Для этого может быть использован метод isDisplayed():

45) Как проверить доступность кнопки на странице?

Для этого может быть использован метод isEnabled():

46) Какие действия мыши могут быть выполнены с помощью Selenium?

Selenium позволяет осуществлять такие действия мыши:

  • click(WebElement element)
  • contextClick(WebElement element)
  • doubleClick(WebElement element)
  • mouseUp(WebElement element)
  • mouseDown(WebElement element)
  • mouseMove(WebElement element)
  • mouseMove(WebElement element, long xOffset, long yOffset)

47) Напишите код для двойного клика мыши в Selenium?

Код для двойного клика мыши в Selenium:

48) Как с помощью Selenium навести указатель мыши на элемент?

Код для наведения указателя мыши на элемент в Selenium:

49) Какие операции на клавиатуре могут быть выполнены с помощью Selenium?

Selenium позволяет осуществлять такие операции на клавиатуре:

  • .pressKey(“nontextkeys“)используется для имитации работы нетекстовых функциональных клавиш.
  • releaseKey(“nontextkeys“)используется для имитации работы сочетаний клавиш.
  • .sendKeys(“sequenceofcharacters“)используется для передачи символьной последовательности во входной или текстовый элемент.

50) Что такое JUnit? Что такое JUnit Annotation?

JUnit– находящаяся в свободном доступе, Java библиотека для модульного тестирования программного обеспечения, предоставленная Apache. JUnit Annotations – процесс добавления специальных синтаксических форм метаданных в Java. JUnit Annotations: переменные, параметры, пакеты, методы и классы.

51) Что такое TestNG и почему он лучше Junit?

TestNG написанный на Java, фреймворк для тестирования, в основе которого заложены преимущества JUnit и NUnit, что делает его одинаково удобным как для разработчиков, так и для тестировщиков. Вот несколько новых фукционалов, которые делают его продуктивнее и легче в использовании:

  • Многопоточное тестирование безопасности кода

  • Поддержкаdata-drivenтестирования
  • Поддержка параметров
  • Поддержка разнообразных инструментов и плагинов (Eclipse,IDEA,Maveи т.п.)
  • Во время выполнения и протоколированияустановкаJDKпо умолдчанию
  • Зависимые методы для серверного тестирования приложения
  • Гибкая конфигурация для тестирования

52) Какие виды аннотаций используются в TestNG ?

53) Как установить приоритет тест кейса в TestNG?

TestNG Priority” используется для составления тест кейсов. Для этого необходимо добавить аннотацию @Test(priority=??). Приоритетное значение будет равно «0» по умолчанию. Если не присвоить другого значения приоритету, исполняться будут все тест кейсы с приоритетом «0».

Приведённый ниже пример, показывает использование приоритета для исполнения тест кейсов.

Так как, приоритет для тест кейса “Registration” не определён, он будет исполняться в первую очередь, а потом уже остальные тест кейсы по приоритету.

54) Объясните как с помощью Selenium Web driver найти битые изображения на странице?

Для того чтобы найти битые изображения на странице следуйте таким шагам:

  • ЧерезXpathполучите все ссылки на странице, используя имя тега
  • Кликните на каждую ссылку на странице
  • Ищите 404/500 в заглавии целевой страницы

55) Могут ли капча и считыватели бар-кода быть протестированы посредством Selenium?

Капча и считыватели бар-кода не могут быть протестированы посредством Selenium.

56) Как протестировать текст подсказок с помощью Selenium?

Текст подсказки в Selenium может быть проверен путем извлечения значения атрибута «title». Например:

57) Как разместить ссылки посредством Selenium?

linkText() и partialLinkText() используются для размещения ссылок посредством Selenium.

58) Можно ли найти все ссылки на веб странице с помощью Selenium?

Поскольку все ссылки имеют анкорный тег «а», мы можем найти их, разместив список всех элементов с этим тегом:

59) Как можно сделать скриншот с помощью Selenium?

Метод getScreenshotAs интерфейса TakesScreenshot используется для того, чтобы сделать скриншот с помощью Selenium:

60) Объясните как можно управлять цветом с помощью Selenium WebDriver?

Функция Use getCssValue(arg0) используется для управления цветом в Selenium WebDriver, путём отправления строки ‘color’ в качестве аргшумента.

61) Сколько ошибок Selenium WebDriver Вы знаете?

Существуют 5 различных ошибок Selenium WebDriver:

  • NoAlertPresentException
  • NoSuchElementException
  • NoSuchWindowException
  • TimeoutException
  • WebDriverException

62) Как использовать Selenium для загрузки файла?

Для загрузки файла используется элемент .sendKeys(“path of file“) на webElement, введением тега и файла типа .

63) Что такое Robot API?

Robot API используется для контроля взаимодействия клавиатуры или мыши с такими элементами Windows как всплывающие окна загрузки, оповещения, печати, или системными приложениями – Notepad, Skype, калькулятор и т.п.

64) Какие Вы знаете методы Robot Class?

Несколько популярных и часто используемых методов Robot Class для автоматизации тестирования веб-приложений:

  • keyPress()для нажатия нижней стрелки на клавиатуре
  • keyRelease()для опускания клавиши со стрелкой вниз
  • mouseMove()перемещает указатель мыши по указаннымXиYкоординатам.
    • mousePress()для нажатия на правую кнопку мыши.

    65) Как исполнять JavaScript в Selenium?


    Для исполнения JavaScript в Selenium используется JavaScriptExecuter. Например:

    66) Какой пакет импортируется во время работы Selenium WebDriver?

    67) Как определить ширину текстового поля с помощью Selenium?

    Для определения ширины текстового поля используется следующая команда:

    68) Имплементация какого драйвера происходит быстрее всего?

    Самый быстрый HtmlUnitDriver. В отличие от FireFoxDriver, ChromeDriver он не содержит графического интерфейса пользователя, во время его работы браузер не запускается.

    69) Какое назначение метода deSelectAll()?

    Он используется для отмены всех вариантов, которые были выбраны из выпадающего списка.

    70) Как можно вернуться обратно из фрейма?

    defaultContent() method используется для возврата из фрейма.

    71) Как войти на любой сайт, если он показывает любой всплывающее окно для аутентификации пользователя и пароля?

    Вы должны передать имя пользователя и пароль в URL-адрес:

    72) Какое назначение метода getOptions()?

    getOptions() используется для получения выбранного параметра из выпадающего списка.

    73) Объясните разницу между командами getWindowHandle() и getWindowHandles()?

    Вы можете получить адрес браузера, используя эти команды.

    Если Вы используете getWindowHandle() Вы получите адрес текущей вклади браузера.

    Соответственно, getWindowHandles(), даёт возможность получить адреса всех открытых вкладок браузера.

    74) Объясните, как можно использовать сценарий восстановления посредством Selenium?

    Сценарий восстановления используется в соответствии с языком программирования. В Java можно использовать обработку ошибок

    75) Как управлять клавишами ENTER/TAB с помощью Selenium WebDriver?

    Метод use click() или метод submit() используются для нажатия на клавишу ENTER. Но, не стоит забывать, что submit() используется, только если type=’submit’.

    Класс act.sendKeys(Keys.ENTER) используется для TAB.

    76) Как управлять оповещениями с помощью Selenium WebDriver?

    Вот несколько методов, которые широко используются для управления оповещениями с помощью Selenium WebDriver:

    77) Что такое data driven фреймворк?

    Data driven фреймворк основан на парадигме проектирования, где тестовая логика фиксирована, но зависит от тестовых данных.

    Сами данные могут быть в разных репозиториях, таких как файлы .csv , .json, .xls , или базы данных. Тесты можно добавлять, просто обновляя файлы или базы данных, вместо непосредственных изменений в программном коде.

    78) Что такое keyword driven фреймворк?

    Keyword driven фреймворк – методология, где действия или шаги рассматриваются в качестве ключевых слов. Эти ключевые слова “click”, “move”, “type” , как и данные, хранятся во внешних репозиториях – csv , .json, .xls , или базах данных

    79) Что такое гибридный фреймворк?

    Гибридный фреймворк – комбинация data driven и keyword driven фреймворков. Операции, инструкции, ключевые слова хранятся в одном репозитории, а базы данных в другом отдельном репозитории. Актуальные тест кейсы считываются с обоих репозиториев и исполняются автоматически. В этой методологии на практике используется лучшее из двух фреймворков.

    80) Какие основные преимущества Selenium Grid?

    Selenium Grid имеет следующие преимущества:

    • Кросс-браузерное тестирование
    • Параллельное исполнение тест кейсов
    • Мульти платформенное тестирование

    81) Что такое хаб в Selenium Grid?

    Selenium Grid хаб – центральный сервер, который контролирует исполнение тест кейсов на разных машинах.

    82) Что такое узел в Selenium Grid?

    Узел в Selenium Grid – машина, подключенная к центральному серверу (хаб) , на которой запускаются тестовые скрипты. В отличие от хаба, в Selenium Grid может быть несколько узлов.

    83) Объясните строку кода Webdriver driver = new FirefoxDriver();.

    WebDriver “- это интерфейс, и мы создаем объект типа WebDriver, создающий экземпляр объекта класса FirefoxDriver.

    84) Зачем создавать переменную ссылку “driver” типа WebDriver вместо создания прямой ссылки объекта FireFoxDriver или любого другого драйвера в операторе Webdriver driver = new FirefoxDriver();?

    Создав переменную ссылку типа WebDriver, мы можем использовать одну и ту же переменную для работы с несколькими браузерами ChromeDriver, IEDriver и т.п.

    85) Как можно создать HTML отчет о тестировании с вашего тестового сценария?

    Существует три способа создания HTML отчет о тестировании:

    • используяdefault.htmlдля полученияHTMLотчёта вTestNG
    • спомощьюANTвJUnit
    • используяXSLjarдля конвертацииXMLконтента вHTMLв своём кастомизированном отчёте

    86) Что может быть причиной тестовых сбоев в Selenium WebDriver?


    Существует несколько причин тестовых сбоев в Selenium WebDriver:

    • ЭлементSeleniumWebDriver, ожидающий доступа, не появился на веб-странице и время ожидания операции истекло
    • SeleniumWebDriverпытается получить доступ к несуществующему объекту
    • SeleniumWebDriverне удаётся найти объект, так как локатор был изменён

    87) Объясните, как произвести отладку тестов в Selenium IDE?

    Отладка тестов в Selenium IDE производится следующим образом:

    • Вставьте точку разрыва в то место, с которого будет происходить пошаговое исполнение тест кейса
    • Запустите тест кейс
    • Исполнение тест кейса будет приостановлено в точке разрыва
    • Кликните на голубую кнопку для того, чтобы продолжить с места, где тест кейс был приостановлен
    • Для одновременного продолжения исполнения всех команд кликните на “Run

    88) Для чего используется файл testng.xml?

    Файл testng.xml используется для конфигурации всего тест сьюита. В нём можно создать тестовые наборы, группы тестов, промаркировать тесты для параллельного исполнения, добавлять параметры в тестовые скрипты. Он может быть использован для будущего запуска.

    89) Объясните разницу между @Factory и @DataProvider?

    @DataProvider относится к индивидуальным тестовым методам и запускает отдельные методы много раз.

    @Factory создаёт отдельные образцы тестовых классов и запускает все тестовые методы в этом классе с различными data. sets.

    90) В каком формате отображаются скрипты в Selenium IDE?

    91) Как управлять тестированием AJAX в Selenium WebDriver?

    AJAX позволяет веб странице получать небольшие объёмы данных с сервера без перезагрузки всей страницы.

    Различные методы ожидания могут применяться для тестирования приложений Ajax: ThreadSleep, Implicit Wait, Explicit Wait, WebdriverWait, Fluent Wait.

    92) FirefoxDriver – это класс, или интерфейс? Какой интерфейс он имплементирует?

    FirefoxDriver – это Java класс. Он имплементирует все методы доступные в интерфейсе .

    93) Как, используя TestNG, сделать один тестовый метод зависимым от другого?

    Мы можем сделать так, чтобы один тестовый метод исполнялся только после успешного завершения другого, используя параметр dependsOnMethods внутри @Test в TestNG: @Test(dependsOnMethods = < “preTests” >)

    94) Какое основное различие между Selenium WebDriver and Selenium RC?

    Selenium WebDriver управляет браузером с помощью встроенной поддержки.

    Selenium RC вставляет функции JavaScript в браузер вовремя загрузки страницы.

    95) Что такое IntelliJ?

    IntelliJ – это интегрированная среда разработки, которая помогает пользователям лучше и быстрее писать код для Selenium. Она может использоваться в качестве альтернативы Java bean и Eclipse.

    96) Какие преимущества использования Git Hub для Selenium?

    • Специалисты, работающие над одним и тем же проектом, могут обновлять его детали, одновременно информируя при этом, других членов команды.
    • Вы можете регулярно создавать проект из удаленного репозитория, используяJenkins. Это поможет вам отслеживать неудачные сборки.

    97) Можно ли использовать Selenium RC для управления тестами в двух различных браузерах одной операционной системы, без использования Selenium Grid?

    Это возможно, если тестовый фреймворк Java не используется. Если используется Java клиент-драйвер Selenium, вместо тестового фреймворка Java, TestNG позволяет не использовать Selenium Grid.

    98) Как запускать параллельное исполнение тест кейсов с помощью TestNG?

    99) Как вы проверите свой собственный локатор элементов?

    “Find Button” из Selenium IDE используется для тестирования локаторов собственных элементов. Кликнув на эту кнопку, Вы увидите правильный или неправильный локатор Вашего элемента.

    Также можно использовать FireFox плагин “ FirePath”.

    100) Когда используется AutoIT?

    AutoIT используется для управления окнами графического интерфейса пользователя, а также не-HTML всплывающими окнами приложения.

    101) Какой API необходимо использовать для тестирования баз данных в Selenium WebDriver?

    JDBC (Java Database Connectivity) API необходимо использовать для тестирования баз данных в Selenium WebDriver.

    102) Какой Java API используется для генерирования pdf отчётов?

    Java API IText используется для генерирования pdf отчётов.

    103) Объясните, в чём преимущество Python по сравнению с Java для автоматического тестирования в Selenium.

    Несколько причин того, почему Python по сравнению с Java, лучше для автоматического тестирования в Selenium:

    • Pythonпроще и компактнее по сравнению сJava
    • Javaиспользует традиционные фигурные скобки для начала и конца блоков,в то время какPythonиспользует отступы
    • Java использует статическую типизацию, в то время как Pythonдинамическую

    104) Как управлять сетевыми задержками с помощью Selenium?

    Вы можете использовать driver.manage().timeouts().pageLoadTimeout(); для управления сетевыми задержками с помощью Selenium.

    105) Каким ещё способом можно запустить Selenium Server, кроме как через порт 4444 (по умолчанию)?


    Selenium server можно также запустить через java-jar selenium-server.jar –port

    106) Объясните, как захватить сведения о сервере на стороне входа с помощью Selenium?

    Для этого используется команда: java jar .jar log selenium.log

    107) Что такое фреймворк и какие фреймворки доступны в Selenium RC?

    Framework -коллекция библиотек и классов для помощи в проведении автоматического тестирования. NUnit, JUnit, TestNG, Bromine, RSpec, Unittest – одни из фреймворков, доступных в Selenium RC .

    108) Как вставить точку отсчёта в Selenium IDE?

    Это может быть сделано следующими способами:

    109) Какие два режима просмотра в Selenium IDE ?

    Два режима просмотра Selenium IDE: всплывающее окно и боковая панель.

    110) Что такое репозиторий объектов?

    Репозиторий объектов – неотъемлемая часть автоматизированного тестирования пользовательского интерфейса (UI), которая позволяет тестировщику сохранять объекты, которые будут использованы в скриптах, в одном или более централизованных местоположениях, а не разбросанными по всем тестовым сценариям.

    Как указать путь к Selenium WebDriver

    20.11.2020, 16:48

    Как в IntellijIDEA указать SDK, а точнее, где этот путь брать
    Собственно, вопрос уже озвучила. Путь к самому JDK я знаю, системные переменные готовы. Но где.

    Intellij IDEA — указать путь к JVM
    При запуске Intellij IDEA просит указать путь к JVM через JAVA_HOME. Можно ли это сделать.

    Как подключить Selenium Webdriver?
    Я начинающий тестеровщик, тестировать в ручную очень напряжно, рутиная работа каждый раз заполнять.

    Как кликнуть по радиокнопке используя Selenium WebDriver?
    Есть две радиокнопки 1 24.11.2020, 11:48 2 24.11.2020, 11:48

    Selenium Webdriver
    Здравствуйте, как можно при помощи Selenium webdriver можно заполнить поле по ссылке.

    java — Selenium Webdriver: как проверить загрузку необходимой веб-страницы

    Я использую Selenium Webdriver для автоматизации тестов для веб-сайта. После каждого события я хочу проверить, было ли действие успешным или нет. Каков наилучший способ сделать это. Например, как проверить правильность загрузки веб-страницы, когда пользователь нажимает кнопку SignIn? Одна вещь, которую я сейчас делаю, — это получить исходную страницу и посмотреть конкретные слова на этой странице для подтверждения. Если эти слова есть, я предполагаю, что страница действительно загружена. Но я не думаю, что это хороший способ.

      25 3
    • 7 июн 2020 2020-06-07 13:53:37
    • pkhabya

    3 ответа

    Вы должны тестировать общую функциональность, а не то, что стиль и т.д. Правильный. Преимущество автоматических тестов над ручными заключается в том, что очень легко проверить вещи с помощью самых разных данных и быстро запустить их после изменений. Как правило, вы делаете предположение, что страницы выглядят правильно, и вы просто хотите проверить свою логику программы во множестве разных ситуаций.

    Например, если вы входите в систему, убедитесь, что пользователь отображается как подписанный, и пусть первая страница отображается правильно (через какой-то текст, который появляется только в определенном месте на первой странице). Если у вас есть несколько страниц, где пользователь вводит всевозможные данные, проверьте, правильно ли отображается сводная страница.

    Не проверяйте захват всего источника и проанализируйте его, скорее, вы должны использовать что-то вроде:

    • 7 июн 2020 2020-06-07 13:53:39
    • t0mppa

    Образец дизайна объектов страниц был бы идеальным кандидатом для вашего требования. Все это дает другие преимущества. См. Эту ссылку https://code.google.com/p/selenium/wiki/PageObjects.

    • 7 июн 2020 2020-06-07 13:53:38
    • Akbar

    Если вы используете Selenium Webdriver, вы можете, очевидно, использовать WebDriver.findElement (по локатору), чтобы проверить, будет ли определенный объект, который будет только на странице, которую вы ожидаете. Например, чтобы проверить успешность входа в систему, вы можете проверить, есть ли объект «Выход» на странице или нет.

    Вам не нужно брать источник и проверять требуемый текст. Если для кнопки «Выход» выбрана кнопка «Выход», линия ниже работает для вас.

    Альтернатива веб-инструментам Java Selenium

    У меня есть Java-код, который реализует веб-драйвер Selenium. Каждый раз, когда запускается этот код, он открывает веб-сайт, вводит некоторую информацию в текстовую область и затем отправляет ее. На данный момент это работает так, как я хочу, хотя есть одна проблема. Я не большой поклонник того, что я надежный в веб-драйвере, который есть у пользователя приложения. Это означает, что если у пользователя есть Safari, веб-драйвер должен быть для Safari, а если у пользователя Chrome, веб-драйвер должен быть для Chrome и т. Д.
    Поэтому, учитывая это, мне было интересно, есть ли альтернатива моему коду, которая делает то же самое. Но это не зависит от веб-драйвера и будет выполнять те же действия в любом браузере, который есть у пользователя.
    Обратите внимание, что я тот, кто создаст веб-сайт и серверную часть php, к которой должно подключиться приложение Java. Поэтому я не против, если мне придется что-то изменить на этом сайте, чтобы сделать альтернативную работу.
    Я добавил оба сценария Java / Selenium и html / php, чтобы убедиться, что все в списке.

    Джава

    ОБНОВИТЬ

    После того, как я узнал о JBrowserDriver, я попытался его использовать, единственная проблема заключается в том, что он ничего не отправляет и не получает никаких ошибок. Таким образом, мне немного трудно понять, что не так.

    В настоящее время это выглядит так, как показано ниже.

    Selenium WebDriver: я хочу перезаписать значение в поле вместо добавления к нему с помощью sendKeys с помощью Java

    в WebDriver, если я использую sendKeys, он добавит мою строку к значению, которое уже существует в поле. Я не могу очистить его с помощью метода clear (), потому что, как только я это сделаю, веб-страница выдаст ошибку, говоря, что она должна быть между 10 и 100. Поэтому я не могу очистить его, или будет вызвана ошибка, прежде чем я смогу ввести новое значение с помощью sendKeys, и если я sendKeys он просто добавляет его к значению уже там.

    есть ли что-нибудь в WebDriver, что позволяет вам перезаписать значение в поле?

    11 ответов

    Я думаю, что можно попробовать сначала выделите весь текст в поле, а затем отправить новую последовательность:

    вы также можете очистить поле перед отправкой ключей.

    хорошо, это вид несколько дней назад. В моем текущем случае ответ от ZloiAdun не работает для меня, но приближает меня к моему решению.

    следующий код делает меня счастливой:

    поэтому я надеюсь, что это поможет кому-то!

    это сработало для меня.

    в случае, если это кому-то помогает, эквивалент C# ответа ZloiAdun:

    используйте это, это надежное решение и хорошо работает для всех браузеров:

    если ввод имеет тип= «файл» — не очищайте его для IE. Он попытается найти файл по пустому пути и выбросит ошибку.

    больше деталей вы смогли найти мой блог

    это решило мою проблему, когда мне пришлось иметь дело с HTML-страницей со встроенным JavaScript

    были проблемы с использованием большинства упомянутых методов, так как textfield не принял ввод с клавиатуры, и решение мыши кажется неполным.

    это сработало для имитации щелчка в поле, выбора содержимого и замены его новым.

    исходный вопрос говорит, что clear () нельзя использовать. Это не относится к данной ситуации. Я добавляю свой рабочий пример здесь, так как это сообщение было одним из первых результатов Google для очистки ввода перед вводом значения.

    для ввода, где здесь нет дополнительных ограничений, я включаю агностический метод браузера для Селена с использованием NodeJS. Этот фрагмент является частью общей библиотеки, которую я импортирую с помощью VAR test = require (‘common’); в моих тестовых сценариях. Это для стандартный модуль узла.экспорт определения.

    найдите элемент, щелкните его, очистите и отправьте ключи.

    Основные понятия и методы Selenium Webdriver API

    Основными понятиями в Selenium Webdriver являются:

    • Webdriver — самая важная сущность, отвественная за управление браузером. Основной ход скрипта/теста строится именно вокруг экземпляра этой сущности.
    • Webelement — вторая важная сущность, представляющая собой абстракцию над веб элементом (кнопки, ссылки, инпута и др.). Webelement инкапсулирует методы для взаимодействия пользователя с элементами и получения их текщего статуса.
    • By — абстракция над локатором веб элемента. Этот класс инкапсулирует информацию о селекторе(например, CSS), а также сам локатор элемента, то есть всю информацию, необходимую для нахождения нужного элемента на странице.

    Сам процесс взаимодействия с браузером через Webdriver API довольно прост:

    Нужно создать Webdriver:

    При выполнении этой команды будет запущен Chrome, при условии, что он установлен в директорию по умолчанию и путь к ChromeDriver сохранен в системной переменной PATH.

    Необходимо открыть тестируемое приложение (AUT), перейдя по url:

    Теоритически в хроме при этом должен открыться сайт компании.

    Далее следует серия действий по нахождению элементов на странице и взаимодействию с ними:

    Или более кратко:

    После нахождения элемента, кликнем по нему:

    Далее следует совокупность похожих действий, как того требует сценарий.

    В конце теста (часто также и в середине) должна быть какая-то проверка, которая и определит в конечном счете результат выполнения теста:

    Проверки может и не быть, если цель вашего скрипта — не тест, а выполнение какой-то рутины.

  • После теста надо закрыть браузер:
  • Следует отметить, что для поиска элементов доступно два метода:

    1. Первый — найдет только первый элемент, удовлетворяющий локатору:
    2. Второй — вернет весь список элементов, удовлетворяющих запросу:
    Цукерберг рекомендует:  Плагины - самые лучшие галереи для wordpress
    Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих