Что делает метод driver close
Продолжение перевода неофициальной документации Selenium для Python.
Перевод сделан с разрешения автора Baiju Muthukadan.
Оригинал можно найти здесь.
Содержание:
2.1. Простое использование
Если вы установили привязку Selenium к Python, вы можете начать использовать ее с помощью интерпретатора Python.
Код выше может быть сохранен в файл (к примеру, python_org_search.py), и запущен:
Запускаемый вами Python должен содержать установленный модуль selenium.
2.2. Пошаговый разбор примера
Модуль selenium.webdriver предоставляет весь функционал WebDriver'а. На данный момент WebDriver поддерживает реализации Firefox, Chrome, Ie и Remote. Класс Keys обеспечивает взаимодействие с командами клавиатуры, такими как RETURN, F1, ALT и т.д…
Далее создается элемент класса Firefox WebDriver.
Метод driver.get перенаправляет к странице URL в параметре. WebDriver будет ждать пока страница не загрузится полностью (то есть, событие “onload” игнорируется), прежде чем передать контроль вашему тесту или скрипту. Стоит отметить, что если страница использует много AJAX-кода при загрузке, то WebDriver может не распознать, загрузилась ли она полностью:
Следующая строка — это утверждение (англ. assertion), что заголовок содержит слово “Python” [assert позволяет проверять предположения о значениях произвольных данных в произвольном месте программы. По своей сути assert напоминает констатацию факта, расположенную посреди кода программы. В случаях, когда произнесенное утверждение не верно, assert возбуждает исключение. Такое поведение позволяет контролировать выполнение программы в строго определенном русле. Отличие assert от условий заключается в том, что программа с assert не приемлет иного хода событий, считая дальнейшее выполнение программы или функции бессмысленным — Прим. пер.]:
WebDriver предоставляет ряд способов получения элементов с помощью методов find_element_by_*. Для примера, элемент ввода текста input может быть найден по его атрибуту name методом find_element_by_name. Подробное описание методов поиска элементов можно найти в главе Поиск Элементов:
После ответа страницы, вы получите результат, если таковой ожидается. Чтобы удостовериться, что мы получили какой-либо результат, добавим утверждение:
В завершение, окно браузера закрывается. Вы можете также вызывать метод quit вместо close. Метод quit закроет браузер полностью, в то время как close закроет одну вкладку. Однако, в случае, когда открыта только одна вкладка, по умолчанию большинство браузеров закрывается полностью:
2.3. Использование Selenium для написания тестов
Вы можете запустить тест выше из командной строки следующей командой:
Результат сверху показывает, что тест завершился успешно.
2.4. Пошаговый разбор примера
Сначала были импортированы все основные необходимые модули. Модуль unittest встроен в Python и реализован на Java’s JUnit. Этот модуль предоставляет собой утилиту для организации тестов.
Модуль selenium.webdriver предоставляет весь функционал WebDriver'а. На данный момент WebDriver поддерживает реализации Firefox, Chrome, Ie и Remote. Класс Keys обеспечивает взаимодействие с командами клавиатуры, такими как RETURN, F1, ALT и т.д…
setUp — это часть инициализации, этот метод будет вызываться перед каждым методом теста, который вы собираетесь написать внутри класса теста. Здесь мы создаем элемент класса Firefox WebDriver.
Далее описан метод нашего теста. Метод теста всегда должен начинаться с фразы test. Первая строка метода создает локальную ссылку на объект драйвера, созданный методом setUp.
Метод driver.get перенаправляет к странице URL в параметре. WebDriver будет ждать пока страница не загрузится полностью (то есть, событие “onload” игнорируется), прежде чем передать контроль вашему тесту или скрипту. Стоит отметить, что если страница использует много AJAX-кода при загрузке, то WebDriver может не распознать, загрузилась ли она полностью:
Следующая строка — это утверждение, что заголовок содержит слово “Python”:
WebDriver предоставляет ряд способов получения элементов с помощью методов find_element_by_*. Для примера, элемент ввода текста input может быть найден по его атрибуту name методом find_element_by_name. Подробное описание методов поиска элементов можно найти в главе Поиск Элементов:
После ответа страницы, вы получите результат, если таковой ожидается. Чтобы удостовериться, что мы получили какой-либо результат, добавим утверждение:
Метод tearDown будет вызван после каждого метода теста. Это метод для действий чистки. В текущем методе реализовано закрытие окна браузера. Вы можете также вызывать метод quit вместо close. Метод quit закроет браузер полностью, в то время как close закроет одну вкладку. Однако, в случае, когда открыта только одна вкладка, по умолчанию большинство браузеров закрывается полностью.:
Завершающий код — это стандартная вставка кода для запуска набора тестов [Сравнение __name__ с "__main__" означает, что модуль (файл программы) запущен как отдельная программа («main» (англ.) — «основная», «главная») (а не импортирован из другого модуля). Если вы импортируете модуль, атрибут модуля __name__ будет равен имени файла без каталога и расширения — Прим. пер.]:
2.5. Использование Selenium с remote WebDriver
Для использования remote WebDriver (удаленного веб-драйвера) необходимо запустить Selenium server. Для запуска сервера используйте команду:
Строка выше сообщает о том, что вы можете использовать указанный URL для подключения remote WebDriver. Ниже приводится несколько примеров:
Переменная desired_capabilities — это словарь. Вместо того, чтобы использовать словари по умолчанию, вы можете явно прописать значения:
- webDriver.Close() - Закройте окно браузера, в котором находится фокус
- webDriver.Quit() - Вызов Dispose()
- webDriver.Dispose() Закрывает все окна браузера и безопасно завершает сеанс
В приведенном ниже коде будет удален объект драйвера, завершается сеанс и закрывается все браузеры, открытые во время проверки, будет ли тест терпеть неудачу или пройти.
В заключение убедитесь, что перед выходом из программы вызывается Quit() или Dispose(), и не используйте метод Close(), если вы не уверены в том, что делаете.
Примечание
Я нашел этот вопрос, когда пытаюсь выяснить связанную проблему, почему моя виртуальная машина закончилась из жесткого диска. Оказывается, исключение вызывало Quit() или Dispose(), чтобы не вызываться каждый прогон, который затем заставлял папку appData заполнять жесткий диск. Поэтому мы правильно использовали метод Quit(), но код был недоступен. Резюме убедитесь, что все пути кода очистят ваши неуправляемые объекты, используя безопасные шаблоны исключений или реализующие IDisposable
И
В случае RemoteDriver, вызывающего Quit() или Dispose(), также будет закрыт сеанс на сервере Selenium. Если сеанс не закрыт, файлы журнала для этого сеанса остаются в памяти.
Ответ 2
Close() - он используется для закрытия браузера или страницы, которая в настоящее время имеет фокус.
Quit() - Он используется для закрытия экземпляра веб-драйвера или уничтожения экземпляра веб-драйвера (Закройте все окна).
Dispose() - Я не знаю об этом методе.
Ответ 3
driver.close и driver.quit - два разных метода для закрытия сеанса браузера в Selenium WebDriver. Понимание их обоих и знание того, когда использовать каждый метод, важно при выполнении теста. Поэтому я попытался пролить свет на оба этих метода.
driver.close - Этот метод закрывает окно браузера, на котором установлен фокус. Несмотря на знакомое название этого метода, WebDriver не реализует интерфейс AutoCloseable .
driver.quit - Этот метод в основном вызывает driver.dispose теперь внутренний метод, который, в свою очередь, закрывает все окна браузера и корректно завершает сеанс WebDriver.
driver.dispose - Как упоминалось ранее, это внутренний метод WebDriver, который был отброшен в соответствии с другим ответом - необходима проверка. Этот метод в действительности не имеет прецедента в обычном рабочем процессе тестирования, поскольку любой из предыдущих методов должен работать в большинстве случаев.
Объяснение варианта использования: Вы должны использовать driver.quit всякий раз, когда хотите завершить программу. Он закроет все открытые окна браузера и завершит сеанс WebDriver. Если вы не используете driver.quit в конце программы, сеанс WebDriver не закроется должным образом и файлы не будут удалены из памяти. Это может привести к ошибкам утечки памяти.
Приведенное выше объяснение должно объяснить разницу между методами driver.close и driver.quit в WebDriver. Я надеюсь, что вы найдете это полезным.
На следующем сайте есть несколько полезных советов по тестированию селена: Ссылка
Ответ 4
quit() : выход из этого драйвера, закрытие каждого связанного окна, которое было открыто.
close() : закройте текущее окно, выйдя из браузера, если оно открыто в настоящее время.
Ответ 5
Основанный на проблеме на Github PhantomJS, quit() не завершает процесс PhantomJS. Вы должны использовать:
Ответ 6
close(): - Предположим, что вы открыли несколько окон браузера с одним экземпляром драйвера, теперь вызов close() для экземпляра драйвера закроет текущее окно, на которое указывает экземпляр драйвера. Но экземпляр драйвера все еще остается в памяти и может использоваться для обработки других открытых окон браузера.
quit(): - Если вы вызываете quit() для экземпляра драйвера и у вас открыто одно или несколько окон браузера, он закроет все открытые окна браузера, а экземпляр драйвера будет удален из памяти, т.е. удален из памяти. Так что теперь вы не можете использовать этот экземпляр драйвера для выполнения других операций после вызова quit(). Если вы это сделаете, вы получите исключение.
dispose(): - я не думаю, что есть метод dispose для экземпляра WebDriver.
Вы можете обратиться к официальному документу по селену по ссылке.
Ответ 7
close() - команда веб-драйвера, которая закрывает окно браузера, которое в данный момент находится в фокусе. Несмотря на знакомое название этого метода, WebDriver не реализует интерфейс AutoCloseable .
В процессе автоматизации, если открыто более одного окна браузера, команда close() закроет только текущее окно браузера, которое в данный момент находится в фокусе. Остальные окна браузера не будут закрыты. Следующий код можно использовать для закрытия текущего окна браузера:
quit() - это команда webdriver, которая вызывает метод driver.dispose, который, в свою очередь, закрывает все окна браузера и завершает сеанс WebDriver. Если мы не используем quit() в конце программы, сеанс WebDriver не будет закрыт должным образом и файлы не будут удалены из памяти. Это может привести к ошибкам утечки памяти.
Если в процессе автоматизации открывается только одно окно браузера, команды close() и quit() работают одинаково. Оба будут различаться по своим функциям, если во время автоматизации открыто более одного окна браузера.
Команда утилизации Dispose() должен вызвать Quit(), и похоже, что это так. Однако эта проблема также связана с тем, что любые последующие действия блокируются до тех пор, пока PhantomJS не будет закрыт вручную.
Ответ 8
Разница между driver.close() и driver.quit()
driver.close - закрывает окно браузера, на котором установлен фокус.
driver.quit - он в основном вызывает метод driver.dispose, который, в свою очередь, закрывает все окна браузера и корректно завершает сеанс WebDriver.
Ответ 9
WebDriver.Close() Этот метод используется для закрытия текущего открытого окна. Он закрывает текущее открытое окно, на которое фокусируется драйвер.
WebDriver.Quit() Этот метод используется для уничтожения экземпляра WebDriver. Он закрывает все окна браузера, связанные с этим драйвером, и безопасно завершает сеанс. Вызов WebDriver.Quit() Dispose.
WebDriver.Dispose() Этот метод закрывает все окна браузера и безопасно завершает сеанс
Ответ 10
Насколько я понимаю, driver.close(); закроет текущий браузер, и driver.quit(); прекратит работу всего браузера.
- webDriver.Close() - Закройте окно браузера, на котором находится драйвер.
- webDriver.Quit() - Вызовы Dispose()
- webDriver.Dispose() Закрывает все окна браузера и безопасно завершает сеанс
Приведенный ниже код удалит объект драйвера, завершит сеанс и закроет все браузеры, открытые во время теста, независимо от того, пройден тест или нет.
Подводя итог, убедитесь, что перед выходом из программы вызывается Quit() или Dispose(), и не используйте метод Close(), если вы не уверены в том, что делаете.
Примечание
. Я обнаружил этот вопрос, когда пытался выяснить связанную с этим проблему, почему на моих виртуальных машинах не хватало места на жестком диске. Оказывается, исключение приводило к тому, что Quit() или Dispose() не вызывались при каждом запуске, что приводило к тому, что папка appData заполняла жесткий диск. Итак, мы правильно использовали метод Quit(), но код был недоступен. Резюме убедитесь, что все пути кода будут очищать ваши неуправляемые объекты с помощью безопасных шаблонов исключений или реализации IDisposable.
Также
в случае вызова RemoteDriver Quit() или Dispose() также закроет сеанс на сервере Selenium. Если сеанс не закрыт, файлы журнала для этого сеанса остаются в памяти.
@ rcasady616 Это лучшее объяснение, которое у меня есть. Спасибо за это, и я думаю, что это достойно для upvote.
@Mr.Bultitude, ну, это понятно, учитывая, что разницы нет ^^ Согласно этому ответу, Quit() это перенаправление на Dispose()
Close() - Он используется для закрытия браузера или страницы, на которой в данный момент находится фокус.
Quit() - Он используется для закрытия экземпляра веб-драйвера или уничтожения экземпляра веб-драйвера (закройте все окна).
Dispose() - Я не знаю об этом методе.
driver.close и driver.quit два разных метода закрытия сеанса браузера в Selenium WebDriver. Понимание обоих и знание того, когда использовать каждый метод, важно при выполнении теста. Поэтому я попытался пролить свет на оба этих метода.
driver.close - Этот метод закрывает окно браузера, на котором установлен фокус. Несмотря на знакомое название этого метода, WebDriver он не реализует AutoCloseable интерфейс .
driver.quit - Этот метод в основном вызывает driver.dispose внутренний метод, который, в свою очередь, закрывает все окна браузера и изящно завершает сеанс WebDriver.
driver.dispose - Как упоминалось ранее, это внутренний метод WebDriver, который был молча удален в соответствии с другим ответом - Требуется проверка. Этот метод действительно не имеет прецедента в обычном рабочем процессе тестирования, поскольку любой из предыдущих методов должен работать для большинства случаев использования.
Объяснение варианта использования: вы должны использовать driver.quit всякий раз, когда хотите завершить программу. Он закроет все открытые окна браузера и завершит сеанс WebDriver. Если вы не используете driver.quit в конце программы, сеанс WebDriver не закроется должным образом, и файлы не будут удалены из памяти. Это может привести к ошибкам утечки памяти.
Приведенное выше объяснение должно объяснить разницу между методами driver.close и driver.quit в WebDriver. Я надеюсь, что вы найдете это полезным.
На следующем веб-сайте есть несколько полезных советов по тестированию селена: Ссылка
- webDriver.Close() - Закройте окно браузера, в котором находится драйвер.
- webDriver.Quit() - Вызов Dispose ()
- webDriver.Dispose() Закрывает все окна браузера и безопасно завершает сеанс
Приведенный ниже код удалит объект драйвера, завершит сеанс и закроет все браузеры, открытые во время теста, независимо от того, завершился ли тест или прошел.
Таким образом, убедитесь, что перед выходом из программы вызывается Quit () или Dispose (), и не используйте метод Close (), если вы не уверены в том, что делаете.
Примечание.
Я обнаружил этот вопрос, когда попытался выяснить связанную проблему, почему на моей виртуальной машине не хватает места на жестком диске. Оказывается, из-за исключения Quit () или Dispose () не вызывались при каждом запуске, что привело к тому, что папка appData заполнила жесткий диск. Итак, мы правильно использовали метод Quit (), но код был недоступен. Резюме: убедитесь, что все пути кода будут очищать ваши неуправляемые объекты с помощью безопасных шаблонов исключений или реализовать IDisposable
Также
в случае RemoteDriver вызов Quit () или Dispose () также закроет сеанс на Selenium Server. Если сеанс не закрыт, файлы журнала для этого сеанса остаются в памяти.
@ rcasady616 Это лучшее объяснение, которое у меня есть. Спасибо за это, и я думаю, что это заслуживает одобрения.
@ Mr.Bultitude ну, это понятно, учитывая то нет никакой разницы ^^ В соответствии с этим ответом, Quit() является перенаправление Dispose()
Close() - Используется для закрытия браузера или страницы, на которой в данный момент находится фокус.
Quit() - Он используется для закрытия экземпляра веб-драйвера или уничтожения экземпляра веб-драйвера (закройте все окна).
Dispose() - Я не знаю об этом методе.
driver.close и driver.quit два разных метода закрытия сеанса браузера в Selenium WebDriver. Понимание их обоих и знание того, когда использовать каждый метод, важно при выполнении теста. Поэтому я попытался пролить свет на оба этих метода.
driver.close - Этот метод закрывает окно браузера, на котором установлен фокус. Несмотря на знакомое название для этого метода, WebDriver никак не реализовать AutoCloseable интерфейс .
driver.quit - Этот метод в основном вызывает driver.dispose теперь внутренний метод, который, в свою очередь, закрывает все окна браузера и корректно завершает сеанс WebDriver.
driver.dispose - Как упоминалось ранее, это внутренний метод WebDriver, который был отброшен в соответствии с другим ответом - Требуется проверка. Этот метод действительно не имеет варианта использования в обычном рабочем процессе тестирования, так как любой из предыдущих методов должен работать в большинстве случаев использования.
Объяснение варианта использования: вы должны использовать его driver.quit всякий раз, когда хотите завершить программу. Он закроет все открытые окна браузера и завершит сеанс WebDriver. Если вы не используете driver.quit в конце программы, сеанс WebDriver не закроется должным образом и файлы не будут удалены из памяти. Это может привести к ошибкам утечки памяти.
Выше объяснение должно объяснить разницу между driver.close и driver.quit методами в WebDriver. Надеюсь, вы сочтете это полезным.
На следующем веб-сайте есть несколько полезных советов по тестированию селена: Ссылка
Python – один из самых популярных языков для веб-автоматизации с Selenium, поскольку в нем есть упрощенный синтаксис, который позволяет выполнять больше задач за меньшее количество строк кода! Таким образом, Python и Selenium создают идеальную комбинацию для автоматизированного тестирования в вебе.
Все больше разработчиков, как и я в свое время, осваивают Python, который считается третьим по популярности языком, если верить опросу Stack Overflow Developer Survey 2021. Поэтому шпаргалка по Selenium с Python может служить для ознакомления с полезным API для автоматизации веб-сайтов (или веб-приложений).
Если в Selenium вы новичок и вам интересно, что же это такое, мы рекомендуем ознакомиться с нашим руководством What is Selenium?.
В этой статье мы разберемся с модулем в Python, который предоставляет нам функционал Selenium WebDriver. Для установки пакета Selenium WebDriver мы воспользуемся Python Package Index (PyPI). Выполните в терминале следующую команду, чтобы установить Selenium для Python:
Если вы хотите запускать свои сценарии тестирования онлайн с Selenium Grid, воспользуйтесь LambdaTest для автоматизации тестирования.
Эта библиотека Python оборачивает Selenium WebDriver и предоставляет методы для автоматизации целого ряда задач, таких как заполнение форм, вход на сайт, нажатие на кнопки и многое другое. Кроме того, вы можете ознакомиться с руководством по Selenium с Python, в котором подробно рассматриваются неотъемлемые аспекты Selenium Python с точки зрения автоматизации веб-тестирования.
Команды, которые вы увидите в шпаргалке, можно использовать в качестве удобного ресурса для всех, кто играется с Selenium на Python для автоматизации веб-приложений. Если вам нужно краткое описание работы Selenium в Python, ознакомьтесь с руководством, в котором подробно рассматривается архитектура Selenium WebDriver и освещаются неотъемлемые аспекты, связанные с Selenium WebDriver в Python. Итак, давайте начнем нашу шпаргалку!
Импортируем библиотеку Selenium
Перед тем, как начать пользоваться командами Selenium, вам нужно импортировать пакет Selenium WebDriver.
Инициализация дайвера в Python
После загрузки соответствующего драйвера браузера вам необходимо запустить Selenium WebDriver и драйвер браузера (например, ChromeDriver для Chrome, GeckoDriver для Firefox и т.д.).
Для Internet Explorer
Если местоположения драйвера браузера нет в переменной PATH (или если его нет в System Path), нужно добавить следующие аргументы:
executable_path : Путь к вашему веб-драйверу Selenium (бинарный файл)
options : Параметры, касающиеся выполнения веб-браузеров
Настройка параметров Selenium WebDriver
Класс Options в Selenium обычно используется в сочетании с желаемыми возможностями кастомизации Selenium WebDriver.
Так вы можете выполнять различные операции, такие как открытие браузера (Chrome, Firefox, Safari, IE, Edge и т.д.) в режиме увеличения, включение и отключение расширений браузера, отключение режима GPU, отключение всплывающих окон и многое другое. Поэтому важно хорошо разобраться в этом разделе шпаргалки по Selenium в Python, поскольку так вы сможете решить проблемы автоматизации, связанные с изменением свойств браузера, о которых мы говорили ранее.
Для Chrome
Импорт опций Chrome
2. Инициализация опций Chrome
3. Добавление желаемых возможностей
4.Добавление желаемых возможностей сессии
Для Firefox
Импорт опций Firefox
2. Инициализация опций Firefox
3. Добавление желаемых возможностей
4. Добавление желаемых возможностей сессии
Поиск элемента
Поиск элемента по атрибуту ID
В этом методе поиск элемента в DOM производится по ID. ID уникален для каждого элемента на странице. Таким образом, с помощью ID можно однозначно идентифицировать элемент. Например, ниже показано использование атрибута ID для поиска веб-элементов на странице входа в систему LambdaTest:
Так вы можете воспользоваться атрибутом ID в Selenium:
Поиск элемента по классу CSS
Элементы в HTML DOM еще можно найти по имени класса, который хранится в атрибуте класса HTML-тега. У класса может быть несколько экземпляров, но метод вернет первый элемент с соответствующим классом.
Так можно использовать имя класса для определения местоположения элемента Email Address на странице LambdaTest:
Поиск элемента по имени
Веб-элементы, такие как открывающий тег, имеют связанный с ними атрибут Name. В Selenium есть метод поиска веб-элементов с помощью атрибута NAME. Если у нескольких элементов одинаковое имя, он вернет первое совпадение.
Вот HTML-код, в котором есть элемент ввода имени Name.
Ниже показано использование метода Selenium Python для определения местоположения веб-элемента с помощью атрибута NAME:
Поиск элемента по XPath
XPath использует путь для выбора узлов и определения местоположения необходимого веб-элемента. Метод find_element_by_xpath() используется для поиска соответствующего элемента в документе с помощью XPath. Вы можете почитать руководство по XPath в Selenium, чтобы получить более глубокое представление об использовании XPath для поиска веб-элементов при автоматизации с Selenium.
Ниже показан поиск элемента email с помощью атрибута XPath:
Поиск элемента по тегу
Этот метод используется для поиска и выбора веб-элементов по HTML-тегу. Метод find_element_by_tag_name() используется для поиска таких тегов, как H1, DIV, INPUT и т.д. Если тег встречается несколько раз, он возвращает первый совпадающий.
Ниже показан поиск элемента с email-адресом по тегу:
Поиск элемента по тексту ссылки и частичному тексту ссылки
Этот метод ищет элемент по тексту ссылки (целому или части). При поиске частичного текста ссылки не ищется точное совпадение со строковым значением, поскольку ищется подмножество строк (в тексте ссылки).
Локатор текста ссылок в Selenium и частичного текста ссылок работает только со ссылками текущего веб-приложения.
Ниже показан поиск элемента на странице входа LambdaTest с помощью локатора текста ссылок:
Ниже показан поиск элемента на странице входа LambdaTest с помощью локатора частичного текста ссылок:
Различные методы поиска элементов
Есть два метода, которые могут быть полезны для поиска элементов страницы в сочетании с классом «By» для выбора атрибутов.
Обратите внимание, что нет никакой разницы между методами find_element_by_tag и find_element(By.tag) . По умолчанию метод find_element_by_tag вызывает find_element(By.tag) .
find_element возвращает первый экземпляр из нескольких веб-элементов с определенным атрибутом в DOM. Метод вызывает исключение NoSuchElementException , если ни один элемент не соответствует требуемому локатору. Прочитайте статью о популярных исключениях Selenium, чтобы лучше понять, из-за чего они возникают.
find_elements возвращает список всех экземпляров веб-элементов, соответствующих определенному атрибуту. Список будет пустым, если в DOM нет нужных элементов.
Ниже вы увидите список атрибутов, доступных для класса By :
TAG_NAME = “tag name”
CLASS_NAME = “class name”
LINK_TEXT = “link text”
PARTIAL_LINK_TEXT = “partial link text”
Дальше показан пример использования метода find_element , который использует локатор XPath для поиска нужного веб-элемента:
Открытие ссылки или документа
Перед выполнением любых операций с веб-элементами, присутствующими на странице, важно открыть целевой URL-адрес (или тестовый URL-адрес). Далее вы увидите несколько способов открыть URL-адрес в Selenium с Python:
driver.get(URL)
Метод driver.get() переходит на страницу, которая передается методу в параметре. Selenium WebDriver будет ждать, пока страница не загрузится полностью, после чего он запустит событие «onload» и вернет управление сценарию тестирования. В статье Selenium Waits in Python вы можете найти дополнительную информацию про обработку ожиданий в Selenium.
Обновление страницы
Бывают сценарии, в которых нужно обновлять содержимое страницы. Метод обновления страниц в Selenium WebDriver используется для обновления веб-страниц.
Метод driver.refresh() обновляет текущую веб-страницу. Он не принимает никаких аргументов и не возвращает никаких значений.
Ввод текста в веб-элемент
Метод send_keys() в Python используется для ввода текста в текстовый элемент. Такой текст передается методу в качестве аргумента. Тот же метод можно использовать для имитации нажатия клавиш в любом поле (например, в полях ввода формы).
Пример использования send_keys() , в котором адрес электронной почты передается текстовому элементу на странице регистрации LambdaTest:
Удаление текста в веб-элементе
Метод element.clear() в Selenium используется для удаления текста из полей, таких как поля ввода формы и т.д.
Пример использования метода очистки содержимого поля ввода электронной почты на домашней странице LambdaTest:
Нажатие на веб-элемент
Метод element.click() в Selenium используется для нажатия на элемент, такой как ссылка-якорь, кнопка и т.д.
Вот так с помощью метода click() можно нажать на кнопку на домашней странице LambdaTest:
Перетаскивание веб-элемента
Перетаскивание объектов является одним из широко используемых сценариев в популярных приложениях (или программах), таких как Canvas, Google Drive, Trello, Asana и т.д. Метод drag_and_drop (элемент, цель) в Selenium помогает автоматизировать функционал перетаскивания веб-элементов из источника и переноса их в целевую область (или элемент).
У класса Actions в Selenium есть два метода, с помощью которых вы можете выполнять операции перетаскивания при тестировании кроссбраузерной совместимости. Обязательно ознакомьтесь с нашим подробным руководством, в котором есть информация о том, как выполнять перетаскивание в Selenium.
Вот простой пример использования метода drag_and_drop() :
Выбор опции
Select (элемент) предоставляет полезные методы для взаимодействия с раскрывающимися списками, выбора элементов и многого другого.
Так можно выбрать элемент по индексу:
Вот некоторые вариации выбора нужного элемента с помощью метода select_by_*() :
Метод
Описание
Метод принимает целочисленное значение - индекс опции, которую мы хотим выбрать.
Метод принимает строковое значение и выбирает опцию, в которой есть нужный текст.
Метод принимает строковое значение и выбирает параметр с тем же значением атрибута.
Метод позволяет отменить выбор всех выбранных опций.
Навигация между окнами
Если у вас несколько окон, может потребоваться переключаться между ними перед выполнением действий с веб-элементами из DOM.
driver.switch_to_window(“имя_окна”)
Метод switch_to_window() Selenium WebDriver позволяет переключиться на нужное окно. Дескриптор окна передается в качестве аргумента методу switch_to_window() .
Все последующие вызовы WebDriver теперь применяются к окну в фокусе (или к новому окну после переключения).
driver.window_handles
Свойство window_handles WebDriver возвращает дескрипторы окон. Теперь вы можете использовать метод switch_to_window() для перехода к любому окну из списка window_handles .
driver.current_window_handle
Метод current_window_handle() возвращает дескриптор текущего окна (или окна в фокусе).
Переключение на iFrame
Selenium WebDriver не умеет получать доступ или находить веб-элементы внутри iFrame в контексте главной страницы. Следовательно, вам необходимо переключиться на iFrame, прежде чем обращаться к элементам внутри него.
driver.switch_to_frame(“имя_iframe”)
Метод switch_to_frame() в Selenium Python позволяет менять контекст WebDriver из контекста главной страницы. Также мы можем получить доступ к сабфреймам, добавив между путем и индексом точку.
driver.switch_to_default_content()
Метод позволяет возвращаться обратно к контексту главной страницы.
Обработка всплывающих окон и оповещений
Существует всего три основных типа всплывающих окон и предупреждений, которые обычно используются в веб-приложениях:
driver.switch_to.alert
Свойство switch_to.alert в WebDriver возвращает открытый в данный момент объект alert . Вы можете принять его, отклонить, прочитать содержимое или ввести его в командную строку.
alert_obj.accept()
Как только у вас есть дескриптор окна alert (например, alert_obj ), метод accept() поможет вам принять всплывающее окно предупреждения.
alert_obj.dismiss()
После того как вы переключились на окно alert (например, alert_obj ), вы можете использовать метод dismiss() , чтобы отклонить всплывающее окно предупреждения.
alert_obj.text()
Получение кода страницы
Метод page_source() в Selenium WebDriver используется для получения кода страницы.
Навигация по истории браузера
Selenium WebDriver на Python предоставляет несколько функций для перемещения вперед-назад по истории браузера.
driver.forward()
Этот метод позволяет сценариям перемещаться на один шаг вперед по истории браузера.
driver.back()
Этот метод позволяет сценариям перемещаться на один шаг назад по истории браузера.
Обработка Cookie в Selenium
Обработка файлов cookie в Selenium WebDriver является одним из распространенных сценариев, с которым вам, возможно, придется иметь дело при автоматизации. Можно выполнять различные операции, такие как добавление, удаление, получение имени файла cookie и многое другое.
driver.add_cookie()
Этот метод помогает настроить файл cookie для сессии Selenium. Он принимает значения в виде пары ключ-значение.
Этот метод выводит все доступные файлы cookie для текущей сессии Selenium.
driver.delete_cookie()
Есть возможность удалить определенный файл cookie или все файлы cookie, связанные с текущей сессией Selenium.
Установка размера окна
Настройка тайм-аутов в Selenium WebDriver
Когда браузер загружает страницу, веб-элементы внутри нее могут загружаться через различные промежутки времени. Это может создать сложности при взаимодействии с динамическими элементами, присутствующими на странице.
Если элемент отсутствует в DOM веб-страницы, метод locate вызовет исключение. Ожидания в Selenium позволяют добавлять задержки (в миллисекундах или секундах) между действиями, выполняемыми между загрузкой страницы и поиском требуемого веб-элемента.
Неявное ожидание и явное ожидание - два основных способа добавления задержек в код Selenium в Python для обработки динамических веб-элементов на странице.
Неявное ожидание в Selenium Python
Неявное ожидание информирует Selenium WebDriver о необходимости проверять DOM в течение определенного периода времени при попытке найти веб-элемент, который не доступен сразу после загрузки страницы.
По умолчанию неявное ожидание равно нулю. Однако, как только мы определяем его, оно устанавливается на время жизни объекта WebDriver. Ознакомьтесь с подробным руководством, в котором более детально демонстрируется использование неявного ожидания в Selenium Python.
Явное ожидание в Selenium Python
Явное ожидание в Selenium с Python используется, когда мы хотим дождаться выполнения определенного условия, прежде чем продолжить работу.
В Selenium WebDriver есть несколько удобных методов, которые позволяют подождать, пока не будет выполнено определенное условие. Например, явное ожидание можно получить с помощью класса webdriverWait в сочетании с ожидаемыми условиями в Selenium.
Вот некоторые из ожидаемых условий, которые можно использовать в сочетании с явным ожиданием в Selenium Python:
Читайте также: