Установка 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 ")
Как найти элементы на веб-странице
Мы можем найти определенный элемент на веб-странице, используя следующий метод.
- Прежде всего, нажмите кнопку F12 Исходная страница открывается в правой части окна, как показано ниже
- Теперь нажмите 'Ctrl + Shift + C'или щелкните символ в верхнем левом углу исходной страницы.
- Переместите стрелку на 'По электронной почте или телефону'и щелкните. Этот элемент будет выбран, и исходный код этого элемента будет выделен на исходной странице, как показано ниже. Видно, что у нас есть следующие атрибуты для выбранного элемента
- name = «электронная почта»
- class = «inputtext login_form_input_box»
- id = «электронная почта»
Мы можем найти 'По электронной почте или телефону'элемент, используя любой из вышеперечисленных атрибутов.
- Если у нас нет ни одного из вышеупомянутых атрибутов, мы также можем выбрать элемент, используя 'XPath'. Чтобы скопировать XPath, щелкните правой кнопкой мыши выделенный исходный код на исходной странице. Затем перейдите к 'Копировать> Копировать XPath'.
Поиск элементов с помощью Selenium
Чтобы найти элементы на веб-странице, мы используем 'find_element'метод. Ниже приведены 'find_element'методы, доступные в СЕЛЕН.
- find_element_by_class_name (имя)
- find_element_by_tag_name (имя)
- find_element_by_link_text (текст)
- find_element_by_css_selector (селектор)
- find_element_by_name (имя)
- find_element_by_id (идентификатор)
- find_element_by_xpath (XPath)
Используя вышеуказанные методы, мы можем найти элемент на веб-странице и использовать его в нашем коде автоматизации.
Нажатие на разные элементы веб-страницы
Метод 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», что означает, что этот скрипт будет запускаться в 8-м часу дня
- Пятая запись, равная «0», означает, что эта команда будет запущена на 0-й минуте.
Таким образом, эта команда будет запускаться в 8 часов каждый день.
Заключение
В этой статье мы обсудили, как можно использовать СЕЛЕН вместе с Python для автоматизации вашего браузера с использованием различных методов. Вы можете автоматизировать свою повседневную работу, заполнять формы, загружать свои вещи и многое другое с его помощью. Мы обсудили здесь только два примера, но вы можете автоматизировать все, что человек может сделать вручную с помощью браузера.