Знакомство с селеном
Selenium — инструмент для автоматического тестирования веб-приложений. Тесты Selenium запускаются прямо в браузере, как у реальных пользователей. Поддерживаемые браузеры: IE (7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera и т. д. Основные функции включают в себя: Проверка совместимости с браузерами — протестируйте свое приложение, чтобы убедиться, что оно хорошо работает в разных браузерах и операционных системах. Тестирование функциональности системы. Создавайте регрессионные тесты для проверки функциональности программного обеспечения и требований пользователей. Поддерживает автоматическую запись действий и автоматическое создание тестовых сценариев на разных языках, таких как .Net, Java и Perl (здесь в основном для selenium ide)
история селена
В 2004 году родился Selenium Core — инструмент тестирования, основанный на браузере и использующий язык программирования JavaScript. Он работает в изолированной программной среде браузера. Концепция дизайна заключается в развертывании тестируемого продукта, Selenium Core и тестовых сценариев. к тому же Сервер используется для выполнения автоматического тестирования. В 2005 году родился Selenium RC, который назывался selenium1. В то время Selenium Core фактически был ядром Selenium RC. Selenium RC позволяет тестировать продукт, распределять Selenium Core и тестовые скрипты по разным серверам. (Тестовый скрипт заботится только об отправке HTTP-запроса на указанный URL-адрес. Самому Selenium не нужно заботиться о языке программирования, на котором написан HTTP-запрос) Selenium RC состоит из двух частей: одна — Selenium RC Server, а другая — клиентские драйверы, предоставляющие различные языки программирования для написания тестовых сценариев. В 2007 году родился Webdriver. Концепция дизайна WebDriver заключается в том, чтобы изолировать сквозное тестирование от базовых конкретных инструментов тестирования и использовать адаптер шаблона проектирования для достижения цели. Организация API WebDriver более объектно-ориентирована. В 2008/09 году родился Selenium2, который на самом деле представляет собой слияние selenium rc и webdriver. Основная причина слияния — дополнение недостатков друг друга. В 2009 году появился selenium3. В этой версии исключен selenium rc и в основном состоит из selenium webdriver и selenium Grid. На самом деле мы используем selenium webdriver. Что касается seleniumgrid, то это инструмент для распределенного автоматического тестирования. Итак, сегодня мы поговорим о принципе работы selenium3 (selenium webdriver), именуемого в дальнейшем селеном (указанное выше конкретное время может быть неточным, я также узнал о нем из информации в Интернете, просто чтобы привлечь внимание –)
селеновый принцип
Мы используем Selenium для реализации автоматического тестирования, которое в основном требует трех вещей:
селеновый скрипт
from selenium import webdriver
driver = webdriver.Chrome()
Выполнив приведенный выше код, мы обнаружим, что программа открывает браузер Chrome (обязательное условие: вы правильно настроили драйвер Chrom и соответствующую версию) Так как же селен реализует этот процесс? Хорошо, тогда давайте проанализируем, как работает селен.
Анализ исходного кода
Как показано на картинке, зажмите Ctrl и нажмите Chrome, мы увидим код вебдрайвера. C:\Python36\Lib\site-packages\selenium\webdriver\chrome\webdriver.py
Из строк 68-73 исходного кода мы видим, что он запустил объект службы, а затем вызвал метод sart(). Давайте продолжим рассматривать, что делает метод start() в строке 73.
Мы видим, что в строках 69-76 он выполнил команду cmd. Эта команда в основном запускает драйвер браузера ChromeDriver.exe. Каждый раз, когда мы выполняем скрипт, программа автоматически запускает для нас драйвер браузера. Эффект одинаковый. как запуск вручную.
После запуска драйвера он связывает порт 9515 и разрешает локальный доступ к службе. Фактически, мы можем проверить диспетчер задач локального компьютера и обнаружить, что программа процесса обслуживания действительно запущена.
На первом этапе мы уже знаем, что выполнение скрипта webdriver.Chrome() автоматически запустит драйвер chromedirver.exe, а затем запустит процесс.
Как открыть браузер
Продолжим рассматривать строки 51-57 исходного кода C:\Python36\Lib\site-packages\selenium\webdriver\chrome\webdriver.py, который вызывает метод инициализации родительского класса RemoteWebDriver. Давайте посмотрим, что это за метод. делает?
Вот самая важная строка кода, строка 62, метод self.start_session(capabilities, Browser_profile). Давайте продолжим смотреть, что делает исходный код этого метода.
Анализируя эту часть исходного кода, мы можем обнаружить, что строка 22 отправляет почтовый запрос по адресу localhost:9515/session. Параметры находятся в формате json, а затем возвращает программе конкретную ответную информацию (основная цель здесь — передать информацию). создайте новый идентификатор сеанса) и, наконец, откроет браузерное устройство. ок, операция открытия браузера завершена
Как выполнить соответствующие операции Просмотрите исходный код C:\Python36\Lib\site-packages\selenium\webdriver\chrome\webdriver.py (строки 76–81 в первом исходном коде)
Нажмите ChromeRemoteConnection, чтобы просмотреть исходный код.
Строка 24 обращается к адресу localhost:9515/session. Строки 25–28 определяют некоторые адреса интерфейса, уникальные для используемого нами браузера (chrome). Давайте посмотрим на исходный код родительского класса RemoteConnection.
Этот класс определяет все адреса интерфейсов, необходимые для операций с селеном (все эти адреса интерфейсов инкапсулированы в драйвере браузера), затем все операции браузера реализуются путем доступа к этим интерфейсам. Среди них Command.GET: («POST», «/session/$sessionId/url»). Этот адрес является URL-адресом для доступа к веб-сайту. Давайте сначала запишем его, и он нам пригодится позже. Хорошо, мы знаем адреса интерфейсов, соответствующие всем операциям, так как же выполнить эти интерфейсы для реализации различных операций в браузере? Продолжайте просматривать исходный код сразу после определения адреса интерфейса.
Видно, что метод _request в основном вызывается через метод выполнения для отправки соответствующего адреса запроса операции на сервер через стандартную библиотеку urilib3, тем самым реализуя различные операции браузера. Некоторые люди могут спросить, какая связь между открытием браузера и использованием браузера для выполнения различных действий? Фактически, открытие браузера также отправляет запрос. Запрос вернет идентификатор сеанса. Для различных адресов интерфейса, которые будут использоваться позже, вы также обнаружите, что в адресе интерфейса есть переменная $sessionid. предположим, что он используется при открытии браузера и работе с ним. Идентификаторы сеансов связаны друг с другом для выполнения операций в одном браузере. Второй шаг — изучить различные принципы работы, просмотрев его.
рабочий процесс селена
Может быть, когда вы посмотрите на принцип, вы его не поймете, поэтому мы сможем взглянуть на то, как работает селен?
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/100701.html Исходная ссылка: https://javaforall.cn