Библиотека Selenium

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

  • webdriver.Firefox(): создает экземпляр веб-драйвера для браузера Firefox.
  • webdriver.Chrome(): создает экземпляр веб-драйвера для браузера Chrome.
  • webdriver.Edge(): создает экземпляр веб-драйвера для браузера Edge.
  • webdriver.Safari(): создает экземпляр веб-драйвера для браузера Safari.
  • webdriver.Ie(): создает экземпляр веб-драйвера для браузера Internet Explorer.
  • driver.get(url): открывает указанный URL в текущем окне браузера.
  • elements = driver.find_elements(By.TAG_NAME, tag_name): находит все элементы на странице с указанным тегом.
  • element.click(): осуществляет клик по элементу.
  • element.send_keys(text): вводит текст в элемент.
  • element.get_attribute(attribute_name): получает значение указанного атрибута элемента.
  • element.text: получает текстовое содержимое элемента.
  • element.is_displayed(): проверяет, видим ли элемент на странице.
  • element.is_enabled(): проверяет, доступен ли элемент для взаимодействия.
  • element.clear(): очищает значение элемента, например, текстового поля.
  • driver.switch_to.frame(frame): переключается на указанный фрейм.
  • driver.back(): выполняет переход на предыдущую страницу в истории браузера.
  • driver.forward(): выполняет переход на следующую страницу в истории браузера.
  • driver.refresh(): обновляет текущую страницу.
  • driver.quit(): закрывает браузер и завершает сеанс Selenium.

Selenium WebDriver

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

WebDriver поддерживает различные браузеры, такие как Chrome, Firefox, Safari, Edge и другие, и позволяет работать с ними через унифицированный интерфейс.

Для использования Selenium WebDriver необходимо выполнить следующие шаги:

  1. Установите Selenium командой pip install selenium
  2. Установите Selenium WebDriver: WebDriver для разных браузеров можно загрузить с официальных сайтов или использовать инструменты для установки, такие как pip для языка Python.
  3. Импортируйте необходимые классы: В вашем скрипте Python импортируйте классы и методы, необходимые для работы с WebDriver.
  4. Создайте экземпляр WebDriver: Инициализируйте экземпляр WebDriver для выбранного браузера.
  5. Выполняйте действия с веб-страницей: Используйте методы WebDriver для выполнения действий, таких как поиск элементов, ввод текста, нажатие кнопок и т.д.
  6. Завершите сеанс WebDriver: По окончании работы с веб-страницей закройте сеанс WebDriver, чтобы освободить ресурсы и закрыть браузер.

Пример использования Selenium WebDriver:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

# Инициализация веб-драйвера Chrome
driver = webdriver.Chrome()

# Загрузка веб-страницы
driver.get('https://www.example.com')

# Поиск элемента на странице
search_box = driver.find_elements(By.TAG_NAME, 'div')

# Ввод текста в поле поиска
search_box.send_keys('Selenium WebDriver')

# Нажатие клавиши Enter
search_box.send_keys(Keys.RETURN)

# Получение заголовка страницы
print(driver.title)

# Закрытие браузера
driver.quit()

Пакет webdriver_manager

Пакет webdriver_manager предоставляет удобные инструменты для установки и использования веб-драйверов Selenium без необходимости ручной загрузки и установки драйверов. Он обеспечивает автоматический поиск, загрузку и установку соответствующей версии драйвера в зависимости от операционной системы и используемого браузера. Это значительно упрощает настройку среды выполнения для автоматизированного тестирования или веб-скрапинга с использованием Selenium WebDriver.

Перед использованием необходимо установить пакет командой pip install webdriver-manager

Пример использования пакета webdriver_manager:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# Инициализация веб-драйвера Chrome с использованием webdriver_manager
driver = webdriver.Chrome(ChromeDriverManager().install())

# Загрузка веб-страницы
driver.get('https://www.example.com')

# Дальнейшее взаимодействие с веб-страницей...

# Закрытие браузера
driver.quit()

Метод driver.find_elements

Метод find_elements в библиотеке Selenium позволяет найти все элементы на странице, соответствующие указанному тегу HTML. Он принимает два аргумента:

  • By.TAG_NAME: Стратегия поиска, указывающая на использование тега HTML для поиска элементов.
  • tag_name: Имя тега HTML, по которому осуществляется поиск элементов.

Метод find_elements() возвращает список элементов, найденных на странице с указанным тегом. Если элементы не найдены, то возвращается пустой список.

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

  • By.ID: Стратегия поиска элемента по уникальному идентификатору (id) элемента в HTML.
  • By.NAME: Стратегия поиска элемента по значению атрибута name элемента в HTML.
  • By.XPATH: Стратегия поиска элемента с использованием XPath выражения.
  • By.LINK_TEXT: Стратегия поиска гиперссылки (элемента <a>) по полному совпадению текста ссылки.
  • By.PARTIAL_LINK_TEXT: Стратегия поиска гиперссылки (элемента <a>) по частичному совпадению текста ссылки.
  • By.TAG_NAME: Стратегия поиска элемента по имени тега HTML.
  • By.CLASS_NAME: Стратегия поиска элемента по значению атрибута class элемента в HTML.
  • By.CSS_SELECTOR: Стратегия поиска элемента с использованием CSS-селектора.

Примеры использования метода find_elements():

from selenium import webdriver
from selenium.webdriver.common.by import By

# Создание экземпляра веб-драйвера
driver = webdriver.Chrome()

# Открытие веб-страницы
driver.get('https://www.example.com')

# Нахождение всех элементов с тегом <div>
div_elements = driver.find_elements(By.TAG_NAME, 'div')

# Вывод количества найденных элементов
print(len(div_elements))

# Перебор и вывод текстового содержимого каждого элемента
for element in div_elements:
    print(element.text)

# Закрытие браузера
driver.quit()

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

Пример поиска с XPATH

Пример использования метода driver.find_elements() с использованием By.XPATH:

from selenium import webdriver
from selenium.webdriver.common.by import By

# Инициализация веб-драйвера Chrome
driver = webdriver.Chrome()

# Загрузка веб-страницы
driver.get('https://www.example.com')

# Поиск элементов на странице по XPath
elements = driver.find_elements(By.XPATH, '//div[@class="my-class"]')

# Вывод найденных элементов
for element in elements:
    print(element.text)

# Закрытие браузера
driver.quit()

Использование selenium proxy для браузера Chrome

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

Вот как использовать прокси в библиотеке Selenium для браузера Chrome:

  • Установите библиотеку Selenium, если она еще не установлена.
  • Установите драйвер браузера Chrome, соответствующий вашей версии браузера. Вам потребуется данный драйвер, чтобы использовать браузер Chrome с библиотекой Selenium. Драйвер можно скачать с официального сайта ChromeDriver (https://sites.google.com/chromium.org/driver/?pli=1).
  • Импортируйте необходимые модули:
  • from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
  • Создайте объект Options и настройте его для использования прокси:
  • options = Options()
    options.add_argument('--proxy-server=http://proxy.example.com:8080')

    Здесь http://proxy.example.com:8080 - это URL вашего прокси-сервера.

  • Создайте объект webdriver.Chrome и передайте в него объект Options:
  • driver = webdriver.Chrome(chrome_options=options)
  • Теперь вы можете использовать браузер Chrome через прокси-сервер:
  • driver.get('http://www.example.com')
Использовать прокси можно только без парольные

Обратите внимание, что чтобы использовать прокси в браузере Chrome, вы должны иметь настроенный прокси-сервер и правильно указать его URL в настройках объекта Options. Также не забудьте указать путь к драйверу Chrome в вашей системе.