Selenium

Автоматизація браузера за допомогою селену (Python)

Автоматизація браузера за допомогою селену (Python)
СЕЛЕН це веб-інструмент з відкритим кодом, який використовується для управління веб-браузером за допомогою багатьох мов програмування. Це сторонній інструмент, який доступний для багатьох мов програмування (наприклад,.g. Java, Python, C #, PHP тощо.). Він підтримує майже всі браузери. У цьому підручнику ми розглянемо, як використовувати Selenium з Python, оскільки Python забезпечує комфортне середовище для використання цього інструменту. API Selenium для Python дозволяє вашій програмі безпосередньо керувати вашим браузером подібним чином, як це робить людина. Він може відкривати для вас нові вкладки, заповнювати вашу інформацію, подавати форми, натискати різні посилання та інші подібні дії. Тут ми побачимо, як ми автоматизуємо наш веб-браузер, використовуючи селен разом з Python.

Встановлення селену

Перед використанням СЕЛЕН модуль в python, ми повинні його встановити. Виконайте в терміналі таку команду, щоб встановити його.

pip встановити селен - -

АБО

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

Це встановить СЕЛЕН модуль, і тепер він готовий до використання.

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

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

https: // www.селен.org / завантажити /

Починаємо

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

C: \ Users \ Usama Azad> python
Python 3.6.4 (v3.6.4: d48eceb, 19 грудня 2017 р., 06:54:40) [MSC v.1900 64 біт (AMD64)] на win32
Для отримання додаткової інформації введіть "довідка", "авторське право", "кредити" або "ліцензія".
>>> з веб-драйвера імпорту селену
>>> із селену.веб-драйвер.загальний.імпортувати ключі
# шлях до ваших драйверів chrome
>>> драйвер = веб-драйвер.Chrome ('C: \ chromedriver')

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

>>> драйвер.get ("https: // www.facebook.com ")

Як знайти елементи на веб-сторінці

Ми можемо знайти конкретний елемент на веб-сторінці наступним способом.

Розташування елементів за допомогою селену

Для того, щоб знайти елементи на веб-сторінці, ми використовуємо 'find_element'метод. Наступніfind_element'методи, доступні в СЕЛЕН.

Використовуючи вищезазначені методи, ми можемо знайти елемент на веб-сторінці та використовувати його в нашому коді автоматизації.

Клацання на різних елементах веб-сторінки

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

>>> link_button = драйвер.find_element_by_link_text ('Забутий акаунт?')
>>> кнопка_зв'язку.натисніть ()

Надішліть спеціальні ключі

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

>>> із селену.веб-драйвер.загальний.імпортувати ключі

Наприклад, ви читаєте статтю у Вікіпедії про історію Сполучених Штатів, але лінуєтесь натискати клавішу зі стрілкою ВНИЗ через деякий час. Ви можете автоматизувати, надіславши цей ключ у браузер за допомогою Selenium

з веб-драйвера для імпорту селену
з селену.веб-драйвер.загальний.імпортувати ключі
час імпорту
драйвер = веб-драйвер.Chrome ('C: \ chromedriver')
# Відкрийте посилання на статтю, використовуючи метод get
водій.get ("https: // en.вікіпедія.org / wiki / United_States ")
# Почніть з початку сторінки
elem = драйвер.find_element_by_tag_name ('html')
Правда:
 
час.спати (5)
елем.send_keys (Клавіші.ВНИЗ)

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

У цьому розділі ми побачимо, як автоматизувати наш веб-браузер за допомогою деяких випадків використання.

Автоматично ввійдіть на веб-сайти соціальних мереж

Завдяки веб-автоматизації ви можете легко зробити процес входу в систему автоматичним. Якщо ви регулярно перевіряєте свої веб-сайти в соціальних мережах (скажімо, 20:00), то добре автоматизувати цей процес. Далі наведено код для автоматизації реєстрації в процесі використання двох веб-сайтів соціальних мереж "facebook" та "twitter" СЕЛЕН модуль на Python.

# імпортування веб-драйвера з селенового модуля
з веб-драйвера для імпорту селену
 
# імпорт спеціальних ключів із селену
з селену.веб-драйвер.загальний.імпортувати ключі
 
# створення об'єкта "драйвер" для "Google-Chrome"
драйвер = веб-драйвер.Chrome ('шлях до драйвера Chrome')
 
# розгортання вікна
водій.maximize_window ()
 
# відкриття facebook
водій.отримати ('http: // www.facebook.ком')
 
# пошук елемента "Електронна пошта або телефон" за допомогою атрибута "id"
ім'я користувача = драйвер.find_element_by_id ('електронна пошта')
 
# Введення імені користувача чи електронної пошти для facebook
ім'я користувача.send_keys ('Введіть ім'я користувача / електронну адресу')
 
# пошук елемента "Пароль" за допомогою атрибута "id"
passWord = драйвер.find_element_by_id ('пройти')
 
# введення пароля для facebook
passWord.send_keys ("Ввести пароль")
 
# знайти елемент "кнопка входу" за допомогою атрибута "id" та натиснути "Enter"
водій.find_element_by_id ('u_0_b').send_keys (Клавіші.ENTER)
 
# відкриття нової вкладки для Twitter
водій.execute_script ("вікно.відкрити ('http: // www.щебетати.com ',' tab2 '); ")
 
# перемикається на нову вкладку
водій.switch_to_window ('tab2')
 
#locating 'log in' елемент і клацніть на ньому
водій.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').натисніть ()
 
# знаходження елемента "Телефон, електронна пошта або ім’я користувача"
ім'я користувача = драйвер.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [1] / input ')
 
# введення імені користувача для Twitter
ім'я користувача.send_keys ('Введіть ім'я користувача')
 
# знаходження елемента "Пароль"
passWord = драйвер.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [2] / input ')
# введення пароля для Twitter
passWord.send_keys ('Ввести пароль')
# знаходження кнопки «увійти» та натискання на неї
водій.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / button')
.натисніть ()

Наведений вище код автоматизує браузер для входу на веб-сайти соціальних мереж. Перш за все ми створили об'єкт улюбленого браузера. У цьому випадку ми взяли "Chrome" як браузер. Для створення об'єкта ми передали шлях нашого 'chromedriver' як аргумент. Потім ми ввели URL-адресу facebook і увійшли до Facebook, вибравши елементи та передавши ім’я користувача та пароль.

Після цього ми відкрили нову вкладку та ввели URL-адресу Twitter. Після цього ми перейшли на нову вкладку, оскільки контроль над кодом все ще знаходився на першій вкладці, хоча друга вкладка була відкрита. Потім ми увійшли в твіттер, вибравши елементи та передавши ім’я користувача та пароль.

Автоматизація Інтернет-покупок

Ще одним хорошим прикладом автоматизації браузера можуть бути Інтернет-магазини. Наприклад, ви хочете придбати камеру в Інтернеті, але ціни на неї занадто високі. Ви щодня перевіряєте, ціна в вашому діапазоні чи ні. Це завдання можна автоматизувати за допомогою СЕЛЕН і ви можете уникнути перевірки ціни щодня. Наступний код повідомить вас поштою, доступна ціна бажаного товару чи ні. Якщо бажаний товар продається, програма повідомить вас електронною поштою.

# імпортування веб-драйвера з селенового модуля
з веб-драйвера для імпорту селену
 
# імпорт модуля smtplib для відправки пошти
імпортувати smtplib
 
# визначення функції пошти для інформування електронною поштою
def mail ():
 
# встановлення зв’язку з сервером gmail із доменним іменем та номером порту. 
Це відрізняється для кожного постачальника послуг електронної пошти
з'єднання = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# привітатися з сервером
з'єднання.ehlo ()
 
# запуск зашифрованого з'єднання TLS
з'єднання.starttls ()
 
# увійдіть на сервер gmail із основною адресою та паролем
з'єднання.логін ('адреса електронної пошти відправника', 'пароль')
 
# відправляючи пошту собі з повідомленням про ціну камери
з'єднання.sendmail ('адреса електронної пошти відправника', 'адреса електронної пошти одержувача',
'Тема: Ви можете придбати камеру')
 
# кінцеве з'єднання
з'єднання.вийти ()
Тут закінчується # функція пошти
 
# запуск google chrome, вказавши шлях аргументу chromedriver
драйвер = веб-драйвер.Chrome ('шлях до chromedriver')
 
# мінімізація хромованого вікна
водій.minimize_window ()
 
# відкриття драз.pk сайт
водій.get ('https: // www.daraz.pk /')
 
# пошук елемента рядка пошуку за допомогою атрибута id для пошуку камери
searchBar = драйвер.find_element_by_id ('q')
 
#writing камера в рядку пошуку
searchBar.send_keys ('камера')
 
#locating елемент кнопки пошуку за допомогою xpath елемента
пошук = драйвер.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / button ')
 
#clicking на кнопку пошуку
пошук.натисніть ()
 
# визначення елемента бажаного товару за допомогою атрибута xpath
товар = драйвер.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 '
num = []
 
# читання всіх записів цінового рядка по одному за допомогою циклу for
за х в ціні:
 
# перевіряємо, чи є запис цифровим чи ні, оскільки ми хочемо лише цифри в ціні
якщо х.isdigit ():
 
# додавання до цифрового списку лише цифр
число.додати (x)
 
# об'єднує всі записи num-списку. Тепер ціна - це рядок, що містить лише цифри
ціна = ".приєднатися (число)
 
# перетворення рядка ціни у ціле число
ціна = int (ціна)
 
# перевірка, доступна ціна чи ні
якщо ціна <= 25000:
 
# функція виклику пошти, щоб повідомити вас про ціну
пошта ()
 
# закриття браузера
водій.вийти ()

Вгорі код відкриває daraz.pk-сайт і шукає камеру та повідомляє вас електронною поштою, якщо ціна доступна. Перш за все ми імпортували СЕЛЕН і SMTPLIB модулі. Потім ми визначили функцію "пошта", яка надсилає вам пошту, інформуючи вас про те, що ціна доступна при дзвінку.

Після цього ми відкрили браузер Chrome за допомогою chromedriver і шукали „daraz.pk '. Потім ми знаходимо бажаний товар за допомогою елементів та їх атрибутів. Як знаходити та розташовувати елементи, було описано вище. Отриманою нами ціною був рядок, тому ми перетворили цей рядок у ціле число, а потім перевірили, чи є ціна доступною чи ні. Якщо ціна доступна, тоді зателефонуйте за функцією "пошта".

Створення завдання Cron

Вище двох сценаріїв автоматизації потрібно запускати один раз на день у визначений час. Ми можемо управляти цим, використовуючи завдання cron. Завдання, які додаються до crontab, можна запускати в певний час неодноразово. Щоб додати вищезазначені завдання в crontab, спочатку запустіть наступну команду в терміналі Linux.

[захищено електронною поштою]: ~ $ crontab -e

Наведена вище команда відкриє файл crontab для редагування. В кінці файлу введіть таку команду.

0 8 * * * python / шлях / до / python / script

Ми бачимо записи перед командою справа наліво.

Тож ця команда виконуватиметься о 8 годині щодня.

Висновок

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

How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...
OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...