для чего нужен selenium python

Современная Веб-Автоматизация при Помощи Python и Selenium

для чего нужен selenium python

для чего нужен selenium python

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

Содержание

1. Мотивация: отслеживаем музыкальные привычки

Предположим, что вы время от времени слушаете музыку на bandcamp.com или soundcloud и вам хочется вспомнить название песни, которую вы услышали несколько месяцев назад.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

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

«Было бы классно», думаете вы «Если бы у меня запись моей истории прослушиваний. Я мог бы просто взглянуть на электронную музыку, которую я слушал пару месяцев назад и найти эту песню!»

Сегодня мы создадим простой класс Python под названием BandLeader, который подключается к bandcamp.com, стримит музыку из раздела «Найденное» на главной странице, и отслеживает вашу историю прослушиваний.

История прослушиваний будет сохранена на диске в CSV файле. Далее, вы можете в любой момент просматривать CSV файл в вашей любимой программе для работы с таблицами, или даже в Python.

Если у вас есть опыт в веб-парсинга в Python, то вы знакомы с созданием HTTP запросами и использованием API Python для навигации в DOM. Сегодня мы затронем все эти пункты, за одним исключением.

Сегодня вы используете браузер в режиме без графического интерфейса (режим «командной строки») для выполнения запросов HTTP.

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

Если вы хотите автоматизировать современную сеть, консольные браузеры – неотъемлемая часть.

Бесплатный бонус: Скачайте основу проекта Python+Selenium с полным исходным кодом, который вы можете использовать как основу для вашего веб-парсинга в Python и автоматических приложениях.

2. Установка и Настройка Selenium

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

По выше указанным ссылкам имеется полное описание процесса установки драйверов для Selenium.

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

Источник

Работа с Selenium и Python

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

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

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

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

Он поддерживает множество языков, таких как C #, Java, Perl, PHP и Ruby, хотя в рамках этого руководства мы будем использовать его с Python в Windows.

Что такое Selenium?

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

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

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

Предпосылки

Основы

Хорошо, теперь мы готовы начать работу с Selenium. Первое, что вам нужно сделать, это запустить браузер:

Запустив это, откроется Google Chrome и перейдет на https://google.com.

Здесь важно отметить, что подключение к веб-странице осуществляется с помощью функции get (URL) объекта драйвера.

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

Приведенный выше код печатает исходный HTML-код всей страницы. Если вам нужно собрать данные, это очень полезно.

Расположение элементов

Обычно вам нужно не содержимое всей страницы, а конкретные элементы.

Для этого вам сначала нужно обнаружить свою цель на странице, и для этого вы можете использовать инструмент Inspect Element в Google Chrome.

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

Если у вас есть точный идентификатор искомого элемента, его легко получить:

Получение элементов по имени

Аналогично предыдущему подходу:

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

И снова аналогично предыдущему подходу:

По тегу HTML

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

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

С помощью XPath

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

tag_list теперь содержит каждый тег, для которого атрибут attr установлен в значение val:

Теперь вы можете перебирать tag_list и взаимодействовать с каждым Selenium WebElement в нем.

WebElement

Selenium WebElement практически представляет собой HTML-элемент. Вы можете выполнять операции с этими элементами так же, как и конечный пользователь.

WebDriver

WebDriver похож на WebElement, однако основное отличие заключается в их объеме. Область действия последнего – это сам элемент, а область действия первого – вся страница.

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

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

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

Навигация по странице

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

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

При этом в браузер добавляется файл cookie, который может быть полезен, например, если вам нужно добавить файлы cookie аутентификации или предпочтения. Важно убедиться, что файл cookie имеет формат dict.

Также очень легко получить файлы cookie из браузера:

Приведенный выше код печатает каждый файл cookie в браузере.

Изменение HTML

Иногда вам может понадобиться изменить свойство элемента cerain.

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

Здесь element – это элемент, который нужно изменить, attr – это атрибут, который нужно изменить, а value – это новое значение.

Загрузка файлов с помощью ссылок для скачивания

Иногда может потребоваться скачать файл с веб-сайта:

Вы можете указать путь к месту сохранения, указав download.default_directory, например path\to\directory.

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

Этот код нажимает стрелку вниз (Keys.ARROW_DOWN) 3 раза. После каждого действия action.send_keys (Keys.ARROW_DOWN) программа немного подождет. Это рекомендуется, чтобы убедиться, что все ключи зарегистрированы.

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

Ключи содержат все клавиши на клавиатуре, а это означает, что вы также можете использовать этот метод для табуляции (Keys.TAB) между элементами на странице, что упрощает взаимодействие с ними (также очень важны Keys.RETURN и Keys.SPACE. ).

Нажатие кнопок

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

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

Формы ввода

Вы также можете имитировать нажатия клавиш внутри самих элементов:

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

Кстати, этот код использует сочетание клавиш (CTRL + A) для выделения всего текста внутри элемента. Следующая строка заменяет выделенный текст введенным значением.

Чтобы зарегистрировать сочетания клавиш, передайте все желаемые клавиши в параметрах send_keys.

Прокрутка

Иногда части страницы загружаются только после прокрутки вниз (например, лента Instagram или любая другая страница с бесконечной прокруткой). Это легко сделать, выполнив простой скрипт JavaScript:

В приведенном выше коде используется команда JavaScript для прокрутки страницы вниз, теперь вы можете снова использовать driver.page_source и получить новый контент.

Заключение

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

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

Источник

Начинаем работать с Selenium в Python

для чего нужен selenium python

Введение

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

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

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

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

Он поддерживает многие языки, такие как C #, Java, Perl, PHP и Ruby. Однако в нашей статье изложены материалы по его использованию с Python в Windows.

Что такое Selenium?

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

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

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

Подготовка к работе

Прежде чем мы начнем, нам необходимо проделать следующие операции:

Основы работы с Selenium

Отлично, теперь мы готовы начать работать с Selenium. Попробуем запустить браузер и перейти по заданному URL:

Положение элементов на странице

Как правило, вам совсем не нужно всё содержимое страницы, а лишь только её отдельных частей (HTML элементов). Поэтому вначале необходимо определить местоположение нужного нам HTML элемента на странице, для этого можно использовать инструмент Inspect Element из состава web developer tools браузера Google Chrome.

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

Выберите в контекстном меню «Просмотреть код»

Как ещё можно использовать этот инструмент для поиска элементов на странице, вы можете прочитать на официальном сайте.

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

Получение элементов и их содержимого по id

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

Получение элементов по значению атрибута name

Аналогично предыдущему примеру:

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

И снова, аналогично предыдущему примеру кода:

Получение элементов по имени тега HTML

Так же вы можете получить элементы страницы по имени тега:

Получение элементов с использованием синктаксиса XPath

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

Для решения подобных задач были разработаны другие способы получения содержимого конкретного элемента на странице, например, с использованием синтаксиса XPath (языка запросов к элементам XML документа). С использованием XPath вы сможете находить элементы на странице более быстрым и эффективным способом:

Переменная tag_list теперь содержит все элементы страницы с тегом tag у которого задан атрибут attr с установленным значением val :

Selenium WebElement

Перечислим основные из них:

Selenium WebDriver

С помощью объекта WebDriver вы можете осуществлять множество операций, а точнее практически проделывать все действия, что может сделать человек с обычным браузером.

Вот некоторые полезные его полезные возможности:

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

Навигация по странице

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

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

Также очень легко получить cookie из текущей сессии браузера:

Приведенный выше код выведет в консоли содержимое каждого файла cookie из текущей сессии браузера.

Изменение HTML кода страницы

Если вам понадобилось изменить свойства определенного HTML элемента страницы, например, добавить или удалить его атрибуты и т. д. То как уже упоминалось ранее, вы можете использовать объект Selenium WebDriver для выполнения произвольного JavaScript кода на загруженной странице. Таким образом с помощью JavaScript можно легко изменять любые свойства элементов страницы:

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

Загрузка файлов с использованием ссылок на скачивание

Допустим вам необходимо загрузить какой-либо файл с веб-сайта. Следующий код поможет это осуществить:

Нажатие клавиш клавиатуры

Этот код эмулирует нажатие клавиши «стрелка вниз» ( Keys.ARROW_DOWN ) 3 раза. После каждого нажатия action.send_keys(Keys.ARROW_DOWN) программа ожидает небольшой промежуток времени (0.1 сек.).

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

Нажатия на кнопки и другие HTML элементы

Как уже говорилось выше, вы можете использовать эмуляцию событий нажатия клавиши Tab для перемещения между элементами на странице, клавиши Space (пробел) для заполнения checkbox (флажков), а также клавиш со стрелками для перемещения между пунктами выпадающего меню.

Ввод данных в элементы ввода форм

Вы также можете эмулировать нажатия клавиш внутри HTML элементов ввода в формы текстовой информации:

Скроллинг

Иногда некоторые части страницы загружаются только после ее прокрутки вниз. Например, канал в Instagram или любая другая страница с “бесконечной” прокруткой (с использованием AJAX). C помощью приведенного ниже скрипта JavaScript можно прокрутить страницу браузера вниз:

Приведенный выше код использует команды языка JavaScript для прокрутки до нижней части страницы, теперь вы можете использовать метод driver.page_source и получить полное содержимое страницы.

Заключение

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

Соблюдайте законы, если вы осуществляете сбор контента из ресурсов Интернет. Не нарушайте авторские права 😉

Источник

Selenium тестирование в Python

Библиотека Selenium в Python предоставляет простой API для написания функциональных и интеграционных тестов веб-приложений. Благодаря Selenium Python API легко получить доступ ко всем функциям Selenium WebDriver интуитивным способом.

Для работы Selenium требуется WebDriver. В настоящее время есть WebDriver для Firefox, Chrome, Edge и Safari. В примерах далее будет использован chromedriver.

Установка Selenium

Для установки пакета selenium воспользуемся программой pip. Установку рекомендуется проводить в виртуальном окружении Python.

Установка chromedriver

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

Управление Chrome из Python

Теперь импортируем пакет webdriver из selenium сказав ему использовать chromedriver.

Выполнение этого кода приведёт к кратковременному появлению окна Chrome. Дальше ничего не будет происходить, потому что пример не сообщает webdriver никаких дополнительных инструкций.

Решим простую задачу получения текущей версии программы учёта картриджей и принтеров в организации. Беглый взгляд на код главной страницы показывает, что версия находится внутри разметки:

Таким образом, версия программы находится в тэге a внутри div с классом callout. Поиск его на странице показывает, что этот класс не уникален, поэтому используем Selenium для поиска первого элемента и получения его содержимого следующим образом:

Запуск кода приведёт к вызову окна Chrome, которое загружает страницу целиком, затем производится поиск нужного результата с последующей его печатью в терминал. После выполнения скрипта производится закрытие окна браузера. В этом примере используется селектор CSS с Selenium методом find_elements_by_css_selector. Для навигации по страницам также доступно множество других методов find_element_by_ *.

Скрытый запуск браузера

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

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

Ключевые возможности selenium

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

Всего восемь методов поиска (плюс ещё восемь во множественном числе):

Все эти методы довольно длинные, поэтому хорошим помощником является класс webdriver.common.By. By может заменить методы более длинной формы простым сокращением. Предыдущий пример кода можно заменить на:

Хотя этот код не является кратким, поэтому предлагается его немного доработать создав метод обертки для поиска элементов. Это должно значительно сократить усилия по набору этих методов по мере увеличения размера теста и сложности. Вот примерная обёртка:

Используется множественный метод find_elements и возвращает либо список, либо один элемент в зависимости от того, сколько их найдено. При этом можно использовать find(By.ID, ‘my-id’), вместо driver.find_element_by_id(‘my-id’). Эта форма преобразует код в гораздо более чистый, особенно при переходе между различными доступными методами поиска.

Отправка Input

Большинство проектов веб-приложений будут иметь дело с полями ввода, Selenium также это хорошо поддерживает. Каждый класс webelement (результат различных методов find_element) содержит метод send_keys, который может использоваться для моделирования ввода текста в элементе. Попробуем использовать эту функцию для поиска «Python» в Википедии.

Быстрый просмотр источника страницы Википедии показывает, что элемент ввода поиска использует идентификатор searchInput.

Вышеприведенный код откроет окно Chrome с загруженной страницей в Википедии и «Python» в поле ввода поиска. Это окно остаются открытым, потому что код не включает команду driver.close(), которая используется в предыдущих примерах.

Есть несколько вариантов отправить форму. Далее приведено несколько способов, которые позволяют это выполнить.

Отправка содержимого формы

Еще раз взглянув на html источник в Википедии, форма поиска содержит Далее идентификатор можно использовать с методом webelement.submit() для отправки формы.

Добавьте в предыдущий пример следующий код:

Запуск кода приведёт к открытию окна Chrome с результатами поиска в Википедии слова Python.

Нажатие кнопки submit формы

Страница поиска Wikiedpia включает в себя причудливую, стилизованную кнопку отправки запроса поиска. У него нет уникального идентификатора, поэтому для определения и «щелчка» кнопки код должен использовать какой-либо другой метод. Это единственный элемент button внутри формы поиска, поэтому его можно легко выбрать с помощью селектора CSS.

Добавьте в пример использования Input:

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

В заключении, Selenium содержит набор кодов клавиш, которые могут использоваться для имитации нажатия «специальных» (не буквенно-цифровых) клавиш. Эти коды находятся в webdriver.common.keys. Чтобы отправить форму, код должен будет использовать клавишу Enter, поэтому пересмотренная версия поискового кода Википедии выглядит так:

Как и два предыдущих примера, этот скрипт запустит открытую страницу Chrome с результатами поиска в Википедии.

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

Очистка input

Хотя Selenium предлагает метод webelement.clear(), его реализация несовместима в разных браузерах, и ее поведение может быть определено по-разному в зависимости от тестируемого приложения и элемента. По этим причинам не рекомендуется им пользоваться для очистки полей ввода формы. Вместо этого класс Keys может использоваться для имитации нажатия клавиши backspace несколько раз в input.

Простая функция реализации.

Простая функция будет принимать WebElement, вычислять длину его атрибута value и имитировать нажатие BACK_SPACE, пока весь текст не будет удален из input.

Давайте используем Selenium для поиска в Google слова «selenium». Элемент input поиска Google не имеет уникального идентификатора или класса, но он использует атрибут name со значением «q». Его можно использовать для поиска элемента и отправки keys.

На странице результатов поле поиска по-прежнему имеет значение «q» и теперь заполнено значением «selenium». Хотя имя не изменилось, Selenium нужно будет снова найти элемент, потому что страница изменилась. Добавьте в код изменения, чтобы найти элемент и использовать пользовательскую функцию clear() для его очистить:

В целом BACK_SPACE должен быть намного надежнее, чем метод webelement.clear().

Ожидание

«Ожидание» в Selenium может быть обманчиво сложной проблемой. До сих пор все примеры основывались на способности Selenium дождаться, когда страница закончит загрузку, прежде чем предпринимать какие-либо конкретные действия. Для простых тестов это может быть вполне достаточным. Но по мере усложнения тестов и приложений этот метод может не всегда быть пригодным.

Неявные ожидания Самый простой способ добавить вызов метода WebDriver.implicitly_wait (). Метод принимает целочисленный ввод, который определяет, сколько секунд ждать при выполнении любого из методов find_element.

По умолчанию неявное ожидание равно нулю (или нет ожидания), поэтому, если конкретный элемент не найден сразу, Selenium будет вызывать исключение NoSuchElementException. Попробуем найти элемент name с атрибутом «query» на GitHub (его нет):

Этот код вызовет исключение NoSuchElementException после того, как Chrome загрузит домашнюю страницу GitHub.

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

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

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

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

Ожидаемые условия (явные ожидания)

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

presence_of_element_located() примет объект, описывающий метод и локатор, и вернет true, если объект существует в DOM. Это можно использовать с WebdriverWait.until () и временем ожидания (в секундах):

Время ожидания

Источник


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *