Селен

Автоматизация браузера с использованием Selenium (Python)

Автоматизация браузера с использованием Selenium (Python)
СЕЛЕН это веб-инструмент с открытым исходным кодом, который используется для управления веб-браузером с помощью многих языков программирования. Это сторонний инструмент, доступный для многих языков программирования (e.грамм. Java, Python, C #, PHP и т. Д.). Он поддерживает почти все браузеры. В этом руководстве мы рассмотрим, как использовать Selenium с Python, потому что Python предоставляет удобную среду для использования этого инструмента. Selenium API для Python позволяет вашей программе напрямую управлять вашим браузером так же, как это делает человек. Он может открывать для вас новые вкладки, заполнять вашу информацию, отправлять формы, переходить по различным ссылкам и выполнять другие аналогичные действия. Здесь мы увидим, как мы автоматизируем наш веб-браузер с использованием селена с Python.

Установка Selenium

Перед использованием СЕЛЕН модуль в python, мы должны его установить. Выполните следующую команду в терминале, чтобы установить его.

pip установить селен

ИЛИ ЖЕ

pip3 установить селен

Это установит СЕЛЕН модуль и теперь он готов к использованию.

Веб-драйверы

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

https: // www.селенhq.org / download /

Начиная

После установки необходимых модулей вы можете открыть python CLI и начать играть в своем браузере. Итак, давайте сначала импортируем webdriver и другие модули, эти модули и классы позволят вашей программе Python отправлять нажатия клавиш и другую информацию в ваш браузер.

C: \ Users \ Усама Азад> питон
Python 3.6.4 (v3.6.4: d48eceb, 19 декабря 2017 г., 06:54:40) [MSC v.1900 64 бит (AMD64)] на win32
Введите «помощь», «авторские права», «кредиты» или «лицензия» для получения дополнительной информации.
>>> из selenium import webdriver
>>> из селена.webdriver.общий.ключи импорт Ключи
# путь к вашим драйверам Chrome
>>> драйвер = webdriver.Chrome ('C: \ chromedriver')

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

>>> водитель.get ("https: // www.facebook.com ")

Как найти элементы на веб-странице

Мы можем найти определенный элемент на веб-странице, используя следующий метод.

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

Чтобы найти элементы на веб-странице, мы используем 'find_element'метод. Ниже приведены 'find_element'методы, доступные в СЕЛЕН.

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

Нажатие на разные элементы веб-страницы

Метод click () в селене можно использовать для щелчка по различным ссылкам и элементам кнопок, которые вы нашли с помощью вышеуказанных методов. Например, вы хотите нажать «Забытый аккаунт»?»На странице Facebook

>>> link_button = драйвер.find_element_by_link_text ('Забытый аккаунт?')
>>> link_button.нажмите ()

Отправить специальные ключи

В Selenium также есть модуль, который позволяет отправлять специальные ключи (e.g, Enter, Escape, Page down, page up и т. д.) при просмотре веб-страниц. Вам необходимо импортировать этот модуль, используя следующую команду

>>> из селена.webdriver.общий.ключи импорт Ключи

Например, вы читаете статью в Википедии об истории Соединенных Штатов, но вам лень через некоторое время нажимать клавишу со стрелкой вниз. Вы можете автоматизировать, отправив этот ключ в браузер с помощью Selenium

из selenium import webdriver
из селена.webdriver.общий.ключи импорт Ключи
время импорта
драйвер = webdriver.Chrome ('C: \ chromedriver')
# Открыть ссылку на статью с помощью метода get
Водитель.get ("https: // en.википедия.org / wiki / United_States ")
# Начать с начала страницы
elem = драйвер.find_element_by_tag_name ('html')
в то время как True:
 
время.сон (5)
элем.send_keys (Ключи.ВНИЗ)

Как автоматизировать браузер

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

Автоматический вход на сайты социальных сетей

С помощью веб-автоматизации вы можете легко сделать процесс входа в систему автоматическим. Если вы регулярно проверяете свои сайты в социальных сетях в определенное время (скажем, в 20:00), то хорошо автоматизировать этот процесс. Ниже приведен код для автоматизации входа в процесс двух социальных сетей «facebook» и «twitter» с использованием СЕЛЕН модуль в Python.

# импорт webdriver из модуля selenium
из selenium import webdriver
 
# импорт специальных ключей из селена
из селена.webdriver.общий.ключи импорт Ключи
 
# создание объекта 'driver' для 'Google-Chrome'
драйвер = webdriver.Chrome ('путь к драйверу Chrome')
 
# развернуть окно
Водитель.maximize_window ()
 
# открытие фейсбука
Водитель.получать('http: // www.facebook.ком')
 
# поиск элемента 'Email or Phone' с помощью атрибута 'id'
userName = драйвер.find_element_by_id ('электронная почта')
 
# Ввод имени пользователя или электронной почты для facebook
имя пользователя.send_keys ('Введите имя пользователя / адрес электронной почты')
 
# поиск элемента 'Password' с помощью атрибута 'id'
passWord = драйвер.find_element_by_id ('пройти')
 
# ввод пароля для фейсбука
пароль.send_keys ("Введите пароль")
 
# найти элемент 'login button' с помощью атрибута 'id' и нажать 'Enter'
Водитель.find_element_by_id ('u_0_b').send_keys (Ключи.ВХОДИТЬ)
 
# открытие новой вкладки для твиттера
Водитель.execute_script ("окно.open ('http: // www.твиттер.com ',' tab2 '); ")
 
# переход на новую вкладку
Водитель.switch_to_window ('tab2')
 
# размещение элемента "войти в систему" и щелчок по нему
Водитель.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').нажмите ()
 
# поиск элемента "Телефон, электронная почта или имя пользователя"
userName = драйвер.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [1] / input ')
 
# ввод имени пользователя для твиттера
имя пользователя.send_keys ('Введите имя пользователя')
 
# поиск элемента "Пароль"
passWord = драйвер.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [2] / input ')
# ввод пароля для твиттера
пароль.send_keys ('Введите пароль')
# находим кнопку "войти в систему" и нажимаем на нее
Водитель.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / button')
.нажмите ()

Приведенный выше код автоматизирует вход браузера на веб-сайты социальных сетей. Первым делом мы создали объект нашего любимого браузера. В этом случае мы выбрали Chrome в качестве браузера. Для создания объекта мы передали в качестве аргумента путь нашего «хромодрайвера». Затем мы ввели URL-адрес facebook и вошли в Facebook, выбрав элементы и передав имя пользователя и пароль.

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

Автоматизация онлайн-магазинов

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

# импорт webdriver из модуля selenium
из selenium import webdriver
 
# импорт модуля smtplib для отправки почты
импортировать smtplib
 
# определение почтовой функции для информирования по электронной почте
def mail ():
 
# устанавливаем соединение с почтовым сервером с доменным именем и номером порта. 
Это отличается от каждого провайдера электронной почты
соединение = smtplib.SMTP ('smtp.Gmail.com ', 587)
 
# поздоровайся с сервером
связь.эло ()
 
# запуск зашифрованного TLS-соединения
связь.starttls ()
 
# войти на сервер gmail со своим основным адресом и паролем
связь.логин ('почтовый адрес отправителя', 'пароль')
 
# отправка письма самому себе с информацией о цене камеры
связь.sendmail ('почтовый адрес отправителя', 'почтовый адрес получателя',
"Тема: Вы можете купить камеру")
 
# завершение соединения
связь.покидать()
# почтовая функция здесь заканчивается
 
# запуск google chrome, указав путь к chromedriver в качестве аргумента
драйвер = webdriver.Chrome ('путь к хромированному драйверу')
 
# сворачивание хромированного окна
Водитель.Minim_window ()
 
# открытие драз.ПК сайт
Водитель.получать('https: // www.дараз.pk /')
 
# поиск элемента строки поиска с помощью атрибута id для поиска камеры
searchBar = драйвер.find_element_by_id ('q')
 
# запись камеры в строку поиска
панель поиска.send_keys ('камера')
 
# размещение элемента кнопки поиска с помощью xpath элемента
search = driver.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / button ')
 
# нажатие на кнопку поиска
поиск.нажмите ()
 
# поиск элемента желаемого продукта с помощью атрибута xpath
product = driver.find_element_by_xpath ('// * [@ id = "root"] / div / div [3] / div [1] / div / div [1]
/ div [2] / div [1] / div / div / div [2] / div [2] / a ')
 
# нажав на желаемый продукт
продукт.нажмите ()
 
# поиск элемента цены с помощью атрибута xpath
цена = водитель.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# извлечение текста из элемента цены. Это дает цену продукта, например, рупий. 24 500 '
цена = цена.текст
 
# преобразование цены в строку
Цена = str (цена)
 
# определение пустого массива. Это будет использоваться при извлечении цифр из цены, например, "24500"
форма 'Rs. 24 500 '
число = []
 
# считываем все записи строки цены одну за другой, используя цикл for
за x в цене:
 
# проверяем, является ли запись цифрой или нет, так как нам нужны только цифры в цене
если х.isdigit ():
 
# добавление только цифр в список num
число.добавить (х)
 
# объединение всех записей num list. Теперь цена представляет собой строку, состоящую только из цифр
цена = ".присоединиться (число)
 
# преобразование строки цены в целое число
цена = int (цена)
 
# проверка доступной цены
если цена <= 25000:
 
# вызываем почтовую функцию, чтобы сообщить цену
Почта()
 
# закрытие браузера
Водитель.покидать()

Над кодом открывается дараз.pk и выполняет поиск камеры и сообщает вам по электронной почте, если цена доступная. В первую очередь мы импортировали СЕЛЕН а также SMTPLIB модули. Затем мы определили функцию `` почта '', которая отправляет вам письмо с уведомлением о доступной цене при вызове.

После этого мы открыли браузер Chrome с помощью chromedriver и искали 'daraz.pk '. Затем мы находим желаемый продукт, используя элементы и их атрибуты. Как обнаруживаются и размещаются элементы, было описано выше. Цена, которую мы получили, была строкой, поэтому мы преобразовали эту строку в целое число, а затем проверили, доступна ли цена или нет. Если цена доступная, вызывайте функцию "почта".

Создание задания Cron

Выше двух сценариев автоматизации требуется запускать один раз в день в определенное время. Мы можем управлять этим с помощью cron job. Задачи, добавленные в crontab, можно запускать в определенное время повторно. Чтобы добавить указанные выше задачи в crontab, прежде всего выполните следующую команду в Терминале Linux.

[электронная почта защищена]: ~ $ crontab -e

Вышеупомянутая команда откроет файл crontab для редактирования. В конце файла введите следующую команду.

0 8 * * * python / путь / к / python / скрипту

Мы видим записи перед командой справа налево.

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

Заключение

В этой статье мы обсудили, как можно использовать СЕЛЕН вместе с Python для автоматизации вашего браузера с использованием различных методов. Вы можете автоматизировать свою повседневную работу, заполнять формы, загружать свои вещи и многое другое с его помощью. Мы обсудили здесь только два примера, но вы можете автоматизировать все, что человек может сделать вручную с помощью браузера.

OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...
Учебник OpenTTD
OpenTTD - одна из самых популярных бизнес-симуляторов. В этой игре вам нужно создать замечательный транспортный бизнес. Тем не менее, вы начнете в нач...
SuperTuxKart для Linux
SuperTuxKart - отличная игра, созданная для того, чтобы бесплатно познакомить вас с Mario Kart в вашей системе Linux. Играть в нее довольно сложно и в...