Какой метод используется в selenium webdriver для открытия веб-страницы в браузере

Обновлено: 21.11.2024

Selenium WebDriver — одна из важнейших частей семейства тестовых наборов Selenium. Но прежде чем изучать Selenium WebDriver, давайте начнем с нескольких основных сведений о Selenium.

Что такое селен?

Selenium — это набор инструментов, которые широко используются в сообществе тестировщиков, когда речь идет о кроссбраузерном тестировании. Selenium не может автоматизировать настольные приложения; его можно использовать только в браузерах. Он считается одним из наиболее предпочтительных наборов инструментов для автоматического тестирования веб-приложений, поскольку обеспечивает поддержку популярных веб-браузеров, что делает его очень мощным.

Он поддерживает ряд браузеров (Google Chrome 12+, Internet Explorer 7,8,9,10, Safari 5.1+, Opera 11.5, Firefox 3+) и операционных систем (Windows, Mac, Linux/Unix).< /p>

BrowserStack теперь является первой облачной платформой автоматизации тестирования, объявившей о полной поддержке Selenium 4 и его API-интерфейсов BiDi. Узнайте больше.

Компоненты селена

Набор тестов Selenium состоит из четырех основных компонентов:

Selenium IDE (интегрированная среда разработки) — это прежде всего инструмент для записи/выполнения. Это надстройка или расширение, доступное как для Firefox, так и для Chrome, которое быстро генерирует тесты благодаря функциям записи и воспроизведения. Вам не нужно изучать какой-либо язык сценариев тестирования для разработки функциональных тестов.

В случае работы с Selenium RC (Remote Control) необходимо хорошее знание хотя бы одного языка программирования. Этот инструмент позволяет разрабатывать тесты адаптивного дизайна на любом языке сценариев по вашему выбору. Серверная и клиентская библиотеки — два основных компонента Selenium RC. Его архитектура сложна и имеет свои ограничения.

Selenium WebDriver — это расширенная версия Selenium RC. Он был представлен на рынке для преодоления ограничений, с которыми столкнулся Selenium RC. Хотя это расширенная версия RC, ее архитектура полностью отличается от RC. Как и Selenium RC, Selenium WebDriver поддерживает несколько платформ программирования, что обеспечивает большую гибкость и требует знания одного из языков программирования.

Selenium Grid — это инструмент, который используется для одновременного выполнения тестовых случаев в разных браузерах, компьютерах и операционных системах. Этот инструмент упрощает тестирование совместимости между браузерами. Существует две версии Selenium Grid: старая версия известна как Grid 1, а последняя версия известна как Grid 2.

Теперь давайте перейдем к руководству по Selenium WebDriver.

Что такое Selenium WebDriver?

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

Selenium WebDriver позволяет выбрать язык программирования для создания тестовых сценариев. Как обсуждалось ранее, это улучшение по сравнению с Selenium RC, позволяющее преодолеть несколько ограничений. Selenium WebDriver не может работать с оконными компонентами, но этот недостаток можно преодолеть с помощью таких инструментов, как Sikuli, Auto IT и т. д.

Теперь давайте попробуем понять архитектуру WebDriver.

Архитектура Selenium WebDriver Framework

Архитектура WebDriver состоит из четырех основных компонентов:

Клиентские библиотеки Selenium/языковые привязки

Selenium обеспечивает поддержку нескольких библиотек, таких как Ruby, Python, Java и т. д., поскольку разработчики Selenium разработали языковые привязки для обеспечения совместимости с несколькими языками. Например, если вы хотите использовать драйвер браузера в Python, используйте привязки Python. Вы можете скачать все поддерживаемые языковые привязки по вашему выбору с официального сайта Selenium.

Проводной протокол JSON

JSON — это аббревиатура от JavaScript Object Notation. Это открытый стандарт, предоставляющий транспортный механизм для передачи данных между клиентом и сервером в Интернете. Он обеспечивает поддержку различных структур данных, таких как массивы и объекты, что упрощает чтение и запись данных из JSON.

Драйверы браузера

Вы можете загрузить драйвер браузера по вашему выбору в соответствии с вашими языковыми требованиями. Например, вы можете настроить веб-драйвер Selenium для Python в BrowserStack.

При выполнении тестового сценария с помощью WebDriver в фоновом режиме выполняются следующие задачи:

Браузеры

Как обсуждалось ранее, Selenium обеспечивает поддержку нескольких браузеров, таких как Chrome, Firefox, Safari, Internet Explorer и т. д.

Заинтересованы в Selenium 4?Посетите подробный веб-семинар по Selenium 4 от Саймона Стюарта, руководителя проекта Selenium, создателя WebDriver и соредактора спецификации W3C WebDriver.

Основные шаги в скрипте Selenium WebDriver

  • Создайте экземпляр WebDriver.
  • Перейти на веб-страницу.
  • Найдите веб-элемент на веб-странице с помощью локаторов в селене.
  • Выполните одно или несколько действий пользователя над элементом.
  • Предварительно загрузите ожидаемый результат/ответ браузера на действие.
  • Выполнить тест.
  • Запишите результаты и сравните их с ожидаемым результатом.

Чтобы запускать тесты, необходимо знать основные команды Selenium WebDriver.

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

Преимущества Selenium WebDriver

  • Это один из самых популярных инструментов с открытым исходным кодом, с которым легко начать тестирование веб-приложений. Он также позволяет выполнять тестирование на совместимость с разными браузерами.
  • Поддерживает несколько операционных систем, таких как Windows, Mac, Linux, Unix и т. д.
  • Он обеспечивает совместимость с целым рядом языков, включая Python, Java, Perl, Ruby и т. д.
  • Обеспечивает поддержку современных браузеров, таких как Chrome, Firefox, Opera, Safari и Internet Explorer.
  • Selenium WebDriver ускоряет выполнение тестовых сценариев по сравнению с другими инструментами.
  • Более лаконичный API (интерфейс прикладного программирования), чем у Selenium RC
  • Он также обеспечивает совместимость с iPhoneDriver, HtmlUnitDriver и AndroidDriver.

Ограничения WebDriver

  • Поддержка новых браузеров не всегда доступна по сравнению с Selenium RC.
  • Для автоматической генерации результатов теста нет встроенной команды.

Как работает Selenium WebDriver

На высоком уровне Selenium WebDriver работает в три этапа:

В качестве примера рассмотрим приведенный ниже фрагмент кода:

После завершения написания кода запустите программу. Приведенный выше код приведет к запуску браузера Chrome, который перейдет на веб-сайт BrowserStack.

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

URL-адрес после преобразования JSON выглядит следующим образом:

Типы запросов

Существует два типа запросов, с которыми вы, возможно, знакомы: GET и POST.

Как использовать Selenium WebDriver: пример

Приведенный ниже код автоматизирует функцию входа на странице входа BrowserStack в Chrome:

Приведенный выше код делает следующее:

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

При выполнении кода Selenium перейдет в браузер Chrome и откроет страницу входа в Browserstack. Затем он войдет в систему, используя соответствующие учетные данные. Он также проверит статус тестового примера с помощью Assert и попытается сопоставить URL-адрес.

Для получения точных результатов все тесты Selenium должны выполняться на реальных устройствах. Начните проводить тесты на более чем 2000 реальных браузерах и устройствах в облаке реальных устройств BrowserStack. Запускайте параллельные тесты в Cloud Selenium Grid, чтобы получать более быстрые результаты без ущерба для точности. Выявляйте ошибки до того, как это сделают пользователи, тестируя программное обеспечение в реальных пользовательских условиях с помощью BrowserStack Automate.

Возможности BrowserStack Automate:

  • Выполнить сотни одновременных тестов
  • Интеграция с популярными языками, такими как Python, Java, и лучшими инструментами CI/CD, такими как Jenkins, CircleCI.
  • Мгновенный доступ к более чем 2000 реальным устройствам и браузерам
  • Комплексная отладка с использованием видеозаписей, автоматических скриншотов ошибок
  • Безопасность корпоративного уровня и соответствие GDPR

Это руководство предназначено для того, чтобы познакомить новых пользователей со многими функциями и способами использования Selenium WebDriver. Изучив основы, изучите многие учебные пособия по Selenium в BrowserStack Guide, чтобы изучить и понять, почему Selenium WebDriver является одним из самых мощных ресурсов в наборе инструментов тестировщика.

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

  1. Методы браузера выполняют действия в браузере.
  2. Методы WebElement выполняют действия над WebElements.
  3. Методы навигации загружают веб-страницу, обновляют веб-страницу или перемещаются вперед и назад в истории нашего браузера.
  4. Методы ожидания делают паузу между операторами выполнения.
  5. Переключение методов позволяет переключаться на оповещения, окна и фреймы. Оповещение также называется всплывающим окном.

Selenium — это реализация с открытым исходным кодом, используемая для автоматизации веб-приложений. Selenium Suite состоит из Selenium IDE, Selenium WebDriver и Selenium Grid.

Обучающие главы

  1. Вы находитесь здесь → Методы браузера Selenium (глава 1)
  2. (Глава 2)
    • найтиэлемент
    • нажмите
    • отправить ключи
    • получить текст
    • получить атрибут
    • очистить
    • отображается
    • Включено
    (Глава 3)
    • в
    • обновить
    • назад
    • вперед
    (Глава 4)
    • pageLoadTimeOut
    • Неявное ожидание
    • Явное ожидание
    • Свободное ожидание
    (Глава 5)
    • Переключиться на фрейм
    • Переключиться на оповещение
    • Переключиться в окно

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

В следующем коде используются все методы браузера, кроме getPageSource для веб-страницы блога TestProject:

получить метод браузера

Метод get — это метод, загружающий новую веб-страницу. В этом примере веб-страница — это сайт блога TestProject. Вот синтаксис, описание метода и описание параметра для метода get:

Давайте разберем синтаксис void org.openqa.selenium.WebDriver.get(String url):

  • void – тип возвращаемого значения, который не возвращает значения.
  • org.openqa.selenium — это пакет Selenium.
  • WebDriver — это основной интерфейс, используемый для тестирования. Он представляет собой идеализированный веб-браузер, такой как Chrome.
  • get(String url) – это метод загрузки веб-страницы.

Метод get Selenium — единственный метод браузера, который получает параметр. Параметр представляет собой URL-адрес строки. Строка — это тип данных, а URL — значение для загрузки. Вот изображение кода метода get:

@Test — это аннотация TestNG, которая устанавливает demoBrowserMethods в качестве метода тестирования. Аннотации были рассмотрены в серии статей The Power of TestNG (Test Next Generation). Метод demoBrowserMethods содержит модификатор открытого доступа с возвращаемым типом void. Вот разбивка метода get:

На следующем изображении показана веб-страница блога TestProject после выполнения метода get:

Метод браузера getCurrentUrl

Обратите внимание, что возвращаемый тип данных — String. Это означает, что getCurrentUrl возвращает строковое значение. Ниже приведены изображения кода и значения Selenium, напечатанные в консоли:

Браузерный метод getTitle

Метод getTitle – это метод, который загружает текущий заголовок страницы. Блог TestProject называется Блог по автоматизации тестирования | ТестПроект. На следующем изображении мы видим синтаксис, описание метода и описание возврата для getTitle:

Тип возвращаемых данных — String. Таким образом, этот метод возвращает значение String, как и метод getCurrentUrl. На следующих изображениях показан код автоматизации, заголовок страницы TestProject и вывод через консоль:

Строка оператора driver.getTitle получает CurrentUrl, а затем присваивает значение titleTestProject. После выполнения 3-е изображение показывает, что такое заголовок страницы тестового проекта? Блог по автоматизации тестирования | Тестовый проект.

методы закрытия и выхода из браузера

Методы браузера close и quit работают аналогично друг другу, потому что они закрывают окно браузера. Однако метод quit закрывает окно и завершает работу драйвера, а метод close закрывает только окно. Вот код автоматизации и описание обоих методов:

Лично я считаю, что большинство инженеров Selenium Automation используют метод quit, поскольку он завершает работу драйвера. Вот пример через диспетчер задач с использованием метода close, когда chromedriver.exe не завершился:

Файл chromedriver.exe будет недоступен в диспетчере задач при использовании метода quit.

В этом руководстве мы рассмотрели методы браузера Selenium, которые выполняют действия в браузере. Следующая статья в этой серии категорий методов Selenium посвящена методам WebElement 🎓💥

Об авторе

Рекс Джонс II любит делиться знаниями о тестировании программного обеспечения. Он занимается разработкой, но любит тестировать приложения.

Рекс является автором, тренером, консультантом и бывшим членом совета директоров группы пользователей: Dallas / Fort Worth User Group Mercury (DFWMUG) и членом группы пользователей: Dallas / Fort Worth Quality Assurance Association (DFWQAA). Кроме того, он является сертифицированным инженером-тестировщиком программного обеспечения (CSTE) и сертифицирован по подходу к управлению тестированием (TMap).

Недавно Рекс создал социальную сеть, в которой демонстрирует видеоролики об автоматизации. Помимо социальной сети, он написал 6 книг по программированию/автоматизации, посвященных VBScript, языку программирования для QTP/UFT, Java, Selenium WebDriver и TestNG.

Присоединиться к сообществу TestProject

Получите полный доступ к первому в мире облачному сообществу тестировщиков с открытым исходным кодом. Наслаждайтесь комплексной платформой автоматизации тестирования TestProject, форумом, блогом и документами - все БЕСПЛАТНО.

После успешного запуска нашего первого тестового примера в браузере Firefox теперь мы делаем шаг к пониманию основных команд навигации Selenium. Таким образом, мы собираемся обсудить различные команды навигации Selenium. которые мы будем использовать в нашем повседневном автоматическом тестировании. Интерфейс навигации позволяет перемещаться вперед и назад по истории браузера.

Selenium Webdriver — команда навигации в браузере

Чтобы получить доступ к методу навигации, просто введите driver.navigate(). Функция IntelliSense eclipse автоматически отобразит все общедоступные методы Navigate Interface, показанные в изображение ниже.

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

Команда «Перейти к» — как перейти к URL-адресу или как открыть веб-страницу в браузере Selenium?

to(String arg0) : void — этот метод загружает новую веб-страницу в текущем окне браузера. Он принимает строковый параметр и ничего не возвращает.

Команда – driver.navigate().to(appUrl);

Он делает то же самое, что и метод driver.get(appUrl).Где appUrl — адрес веб-сайта для загрузки. Лучше всего использовать полный URL-адрес.

Команда «Вперед» — как использовать браузер «Вперед» в браузере Selenium?

forward() : void. Этот метод выполняет ту же операцию, что и нажатие кнопки Вперед в любом браузере. Он ничего не принимает и не возвращает.

Команда – driver.navigate().forward();

Перемещает вас вперед на одну страницу в истории браузера.

Команда «Назад» — как вернуться назад в браузере Selenium?

back() : void. Этот метод выполняет ту же операцию, что и нажатие кнопки «Назад» в любом браузере. Он ничего не принимает и не возвращает.

Команда - driver.navigate().back();

Возвращает вас на одну страницу назад в истории браузера.

Команда «Обновить» — как обновить браузер Selenium?

refresh() : void — этот метод обновляет текущую страницу. Он ничего не принимает и не возвращает.

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

Некоторые из распространенных вариантов использования автоматизации веб-браузера могут быть следующими:

  • Автоматизация ручных тестов в веб-приложении
  • Автоматизация повторяющихся задач, таких как удаление информации с веб-сайтов.
  • Заполнение HTML-форм, выполнение некоторых административных задач и т. д.

В этом руководстве мы рассмотрим один из самых популярных инструментов автоматизации веб-браузера — Selenium. Мы узнаем о его функциях, API и о том, как мы можем использовать его с Java для автоматизации любого веб-сайта.

Что такое селен?

Selenium – это набор инструментов, включающий Selenium IDE, Selenium RC и Selenium WebDriver.

Selenium IDE — это исключительно инструмент для воспроизведения записей, который поставляется в виде плагина для Firefox и расширения для Chrome. Selenium RC был устаревшим инструментом, который сейчас устарел. Selenium WebDriver — новейший и широко используемый инструмент.

Примечание. Термины Selenium, Selenium WebDriver или просто WebDriver взаимозаменяемы для обозначения Selenium WebDriver.

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

Зачем использовать Selenium?

В этом руководстве мы узнаем, как использовать привязки Java для Selenium WebDriver. Мы также изучим API WebDriver.

Успех Selenium также можно объяснить тем фактом, что спецификации WebDriver стали рекомендациями W3C для браузеров.

Предпосылки:

  • Среда Java и ваша любимая интегрированная среда разработки Java

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

В этом руководстве мы будем управлять Google Chrome.

Веб-драйвер

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

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

Сначала укажем путь к драйверу браузера. Затем мы создадим «правильный драйвер» для этого браузера, в нашем случае ChromeDriver:

Как мы видим, драйвер содержит ссылку на ChromeDriver и поэтому может использоваться для управления браузером. Когда приведенный выше оператор выполняется, вы должны увидеть новое окно браузера, открытое в вашей системе. Но браузер еще не открыл ни одного сайта. Нам нужно указать браузеру сделать это.

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

Переход на веб-сайт

Как упоминалось выше, сначала нам нужно перейти на наш целевой веб-сайт. Для этого мы просто отправляем запрос GET на URL-адрес веб-сайта:

Веб-элемент

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

Представлением таких HTML-элементов в Selenium является WebElement . Как и WebDriver, WebElement также является интерфейсом Java. Получив WebElement, мы можем выполнять над ним любую операцию, которую может выполнять конечный пользователь, например щелкать, печатать, выбирать и т. д.

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

Мы можем использовать HTML-атрибуты элемента, такие как id , class и name, чтобы найти элемент. Если таких атрибутов нет, мы можем использовать некоторые передовые методы поиска, такие как селекторы CSS и XPath.

Чтобы проверить HTML-атрибуты любого элемента, мы можем открыть веб-сайт в браузере Chrome (другие браузеры также поддерживают это), щелкнуть правой кнопкой мыши элемент, который нужно выбрать, и нажать Проверить элемент. Это должно открыть Инструменты разработчика и отобразить HTML-атрибуты этого элемента:

Как мы видим, элемент имеет тег и несколько атрибутов, таких как id , class и т. д.

WebDriver поддерживает 8 различных локаторов для поиска элементов:

  • идентификатор
  • имя_класса
  • имя
  • Имя тега
  • текст ссылки
  • частичный текст ссылки
  • селектор CSS*
  • XPath

Давайте рассмотрим их все один за другим, автоматизировав различные элементы на нашем целевом веб-сайте.

Поиск элементов по идентификатору

Если мы проверим поле ввода новостной рассылки на нашем целевом веб-сайте, мы обнаружим, что оно имеет атрибут id:

Мы можем найти этот элемент с помощью локатора идентификатора:

Поиск элементов по className

Если мы проверим то же поле ввода, мы увидим, что оно также имеет атрибут класса.

Мы можем найти этот элемент, используя локатор className:

Примечание. Имя локатора — className , а не class . Но атрибут HTML — class .

Поиск элементов по имени

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

Мы можем найти этот элемент, используя локатор имени:

Поиск элементов через xpath

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

В этом примере мы видим, что все три элемента ввода имеют одинаковое имя arttribute, "gener", но не все они имеют одинаковое значение. Иногда базовые атрибуты, такие как id , class или name, не уникальны, и в этом случае нам нужен способ точно определить, какой именно элемент мы хотим получить.

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

Поиск элементов с помощью cssSelector

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

Технически, для этого фрагмента HTML мы можем легко использовать локатор имен, поскольку они имеют разные значения. Однако в этом примере мы будем использовать cssSelectors для поиска этого элемента, который широко используется во внешнем интерфейсе с такими библиотеками, как jQuery.

Следующий пример может дать вам представление о том, как создавать селекторы CSS для предыдущего фрагмента HTML:

Очевидно, что это очень похоже на подход XPath.

Поиск элементов через linkText

Мы можем найти ссылку по ее тексту:

Поиск элементов через partialLinkText

Скажем, у нас есть ссылка с текстом - "random-text-xyz-i-wont-change-random-digit-123". Как было показано ранее, мы можем найти этот элемент с помощью локатора linkText.

В этих случаях мы можем использовать локатор partialLinkText:

Приведенный выше код успешно выберет нашу ссылку "random-text-xyz-i-wont-change-random-digit-123", поскольку наш селектор содержит подстроку ссылки.

Поиск элементов по имени тега

Мы также можем найти элемент, используя имя его тега, например. ,

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

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

Взаимодействие с элементами

На данный момент мы нашли HTML-элементы на странице и можем получить соответствующий WebElement . Однако мы еще не взаимодействовали с этими элементами так, как это делал бы конечный пользователь: щелкали, печатали, выбирали и т. д. Мы рассмотрим некоторые из этих простых действий в следующих нескольких разделах.

Нажатие элементов

Мы выполняем операцию щелчка, используя метод click(). Мы можем использовать это на любом WebElement, если на него можно нажать. В противном случае будет выдано исключение.

В этом случае давайте щелкнем ссылку на домашнюю страницу :

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

Ввод текста

Давайте введем текст в поле ввода электронной почты для рассылки новостей:

Выбор переключателей

Поскольку переключатели просто нажимаются, мы используем метод click(), чтобы выбрать один из них:

Установка флажков

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

Выбор элементов из раскрывающегося списка

Чтобы выбрать элемент из раскрывающегося списка, нам нужно сделать две вещи:

Во-первых, нам нужно создать экземпляр Select и передать ему элемент со страницы:

Бесплатная электронная книга: Git Essentials

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

Здесь важно отметить, что Select — это класс Java, реализующий интерфейс ISelect.

Далее мы можем выбрать элемент, используя его:

Отображаемый текст:

Значение (атрибут value):

Индекс (начинается с 0):

Если приложение поддерживает множественный выбор, мы можем вызывать один или несколько из этих методов несколько раз для выбора разных элементов.

Чтобы проверить, позволяет ли приложение множественный выбор, мы можем запустить:

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

  • Получение списка параметров:
  • Получение списка выбранных параметров:
  • Получение первого выбранного варианта
  • Отменить выбор всех параметров
  • Отменить выбор по отображаемому тексту:
  • Отменить выбор по значению:
  • Отменить выбор по индексу:

Примечание. Мы также можем объединить два шага поиска элемента и взаимодействия с ним в одном операторе с помощью цепочки. Например, мы можем найти и нажать кнопку «Отправить» следующим образом:

Мы также можем сделать это с помощью Select :

Получение значений атрибутов

Чтобы получить значение определенного атрибута в элементе:

Установка значений атрибутов

Мы также можем установить значение определенного атрибута в элементе. Это может быть полезно, когда мы хотим включить или отключить какой-либо элемент:

Взаимодействие с мышью и клавиатурой

API WebDriver предоставляет класс Actions для взаимодействия с мышью и клавиатурой.

Во-первых, нам нужно создать экземпляр Actions и передать ему экземпляр WebDriver:

Перемещение мыши

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

Перетаскивание

Перетаскивание элемента поверх другого элемента:

Перетаскивание элемента на несколько пикселей (например, 200 пикселей по горизонтали и 0 пикселей по вертикали):

Нажатие клавиш

Удерживайте определенную клавишу при вводе текста, например, клавишу Shift:

Выполнение таких операций, как Ctrl+a , Ctrl+c , Ctrl+v и TAB :

Взаимодействие с браузером

Получение исходного кода страницы

Скорее всего, вы будете использовать это для веб-скрейпинга:

Получение заголовка страницы

Развернуть браузер

Выход из драйвера

Важно закрыть драйвер в конце программы:

Примечание: API WebDriver также предоставляет метод close(), что иногда сбивает с толку новичков. Метод close() просто закрывает браузер и может быть снова открыт в любое время. Он не уничтожает объект WebDriver. Метод quit() больше подходит, когда вам больше не нужен браузер.

Снимки экрана

Во-первых, нам нужно привести WebDriver к типу TakesScreenshot, который является интерфейсом. Затем мы можем вызвать getScreenshotAs() и передать OutputType.FILE .

Наконец, мы можем скопировать файл в локальную файловую систему с соответствующими расширениями, например *.jpg, *.jpg и т. д.

Выполнение JavaScript

Мы также можем внедрить или выполнить любую допустимую часть JavaScript через Selenium WebDriver. Это очень полезно, так как позволяет делать многие вещи, которые не встроены непосредственно в Selenium.

Во-первых, нам нужно привести WebDriver к типу JavaScriptExecutor:

С JavaScriptExecutor может быть несколько вариантов использования:

  • Выполнение операций естественным способом в случае сбоя API WebDriver — например, click() или sendKeys() .

Мы также можем сначала найти элемент с помощью локаторов WebDriver и передать этот элемент в executeScript() в качестве второго аргумента. Это более естественный способ использования JavaScriptExecutor:

Чтобы установить значение поля ввода:

  • Прокрутка страницы вниз:
  • Прокрутка элемента до области просмотра:
  • Изменение страницы (добавление или удаление некоторых атрибутов элемента):

Доступ к файлам cookie

Получить конкретный файл cookie:

Удалить файл cookie:

Заключение

Мы рассмотрели все основные функции Selenium WebDriver, которые нам могут понадобиться при автоматизации веб-браузера. Selenium WebDriver имеет очень обширный API, и охват всего этого выходит за рамки этого руководства.

Возможно, вы заметили, что Selenium WebDriver имеет множество полезных методов для имитации почти всех действий пользователя. Сказав это, современные веб-приложения действительно умны. Если они хотят ограничить свое автоматическое использование, есть разные способы сделать это, например, с помощью капчи. К сожалению, Selenium не может обойти капчу. Используйте этот инструмент, не забывая при этом о Условиях использования целевого веб-сайта.

Читайте также: