В прошлой части я показал, как устанавливать веб-драйвера и использовать веб-локаторы. Вторая часть будет намного интереснее.
Вы узнаете про:
- Взаимодействие с сайтом (DropDown, Entry)
- Осуществление поиска YouTube
- Создание аккаунта с помощью Selenium + JSON
Глава I: Взаимодействие с сайтом
Как я и говорил в прошлой статье, у Selenium существуют веб-локаторы для нахождения конкретных элементов. Взаимодействие с сайтом может быть разное: поля ввода, открытие меню, чекбоксы и многое другое.
Давайте осуществим поиск на сайте YouTube. Напишем какой-нибудь запрос в поиске и нажмем ENTER. Для начала импортируем:
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import NoSuchElementException
import time
common.by
- библиотека Selenium. Её главная задача: принимать веб-локаторы и использовать их.•
common.keys
- позволяет вводить текст в полях вводах, также имеет возможность нажатия клавиш.•
webdriver.chrome.service
- новая библиотека Selenium, которая принимает путь драйвера.•
.common.exceptions
- исключения библиотеки Selenium.Executable_path устарел, используйте Service()
На скрине видно, что executable_path давно устарел и лучше всего использовать объект Service, который принимает путь драйвера.
На скрине видно, что executable_path давно устарел и лучше всего использовать объект Service, который принимает путь драйвера.
Чтобы Selenium понял, где осуществлять поиск, передаем ему параметр - элемент веб-локатора.
Ищем элемент поиска YouTube
Переходим на сайт youtube.com, открываем Инструменты разработчика (код элемента), нажав на F12 или CTRL+SHIFT + I.
Затем нажимаем кнопку в левом вернем углу для нахожения конкретного элемента - поиска YouTube:
Отлично! Всегда помните, что поля ввода имеют тэг <input>. Внимательно посмотрите содержание этого тэга. Нам нужен тэг, который имеет атрибут name=search_query:
Мы нашли атрибут NAME и он принимает параметр
Переходим на сайт youtube.com, открываем Инструменты разработчика (код элемента), нажав на F12 или CTRL+SHIFT + I.
Затем нажимаем кнопку в левом вернем углу для нахожения конкретного элемента - поиска YouTube:
Отлично! Всегда помните, что поля ввода имеют тэг <input>. Внимательно посмотрите содержание этого тэга. Нам нужен тэг, который имеет атрибут name=search_query:
HTML:
<input id="search" autocapitalize="none" autocomplete="off" autocorrect="off" name="search_query" tabindex="0" type="text" spellcheck="false" placeholder="Введите запрос" aria-label="Введите запрос" role="combobox" aria-haspopup="false" aria-autocomplete="list" class="gsfi ytd-searchbox" dir="ltr" style="border: none; padding: 0px; margin: 0px; height: auto; width: 100%; outline: none;">
Мы нашли атрибут NAME и он принимает параметр
search_query
.Создаем класс и конструктор
Python:
class SearchYoutube:
def __init__(self, path: str):
self.path = Service() # путь драйвера
self.browser = webdriver.Chrome(service=self.path) # передаем путь
self.url = "https://youtube.com" # переход на страницы YouTube
self.search = "search_query"
Тут мы создаем класс
SearchYoutube
. Затем создаем конструктор, который принимает атрибуты:•
path
- передается объект Service(), в конце все укажем.•
browser
- запускаем браузер. В качестве аргумента он принимает service со значением пути драйвера.•
url
- принимает ссылку.•
search
- элемент NAME.Теперь переходим к функциям.
Метод go_to_site()
Метод, который переходит на сайт YouTube.
Python:
def go_to_site(self):
print(f"... переход на сайт {self.url} ...")
self.browser.get(self.url)
time.sleep(4) # делаем паузу
Метод search_youtube()
Его задача: найти элемент поиска. С помощью функции
find_element
находим его, в качестве параметров метод принимает тип элемента и сам элемент.
Python:
def search_youtube(self):
print(f"... ищем элемент поиска...")
try:
element = self.browser.find_element(By.NAME, self.search)
element.send_keys("modern talking") # вбиваем это в поиск
element.send_keys(Keys.ENTER) # нажимаем ENTER
time.sleep(5)
except NoSuchElementException:
print(f"Элемент {search} не был найден!")
browser.quit()
send_keys
мы вписываем какой-нибудь запрос, затем нажимаем ENTER и устанавливаем задержку на 5 секунд.Это всё, с осуществлением поиска закончено.
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import NoSuchElementException
import time
class SearchYoutube:
def __init__(self, path: str):
self.path = Service() # путь драйвера
self.browser = webdriver.Chrome(service=self.path) # передаем путь
self.url = "https://youtube.com" # переход на страницы YouTube
self.search = "search_query"
def go_to_site(self):
print(f"... переход на сайт {self.url} ...")
self.browser.get(self.url)
time.sleep(4) # делаем паузу
def search_youtube(self):
print(f"... ищем элемент поиска...")
try:
element = self.browser.find_element(By.NAME, self.search)
element.send_keys("modern talking") # вбиваем это в поиск
element.send_keys(Keys.ENTER) # нажимаем ENTER
time.sleep(5)
except NoSuchElementException:
print(f"Элемент {search} не был найден!")
browser.quit()
def main():
obj = SearchYoutube(r'chromedriver\chromedriver.exe')
obj.go_to_site()
obj.search_youtube()
if __name__ == '__main__':
main()
send_keys
. Так же этот метод поддерживает нажатия клавиш. Попробуйте использовать его на других сайтах, где имеется поля ввода, и у вас всё будет работать.DropDown
Когда вы переходите на сайт регистрации, вам просят указать ваш пол, мы в это время открываем простенькое меню и выбираем нужный нам параметр. Для демонстрации существует
Ссылка скрыта от гостей
регистрации, именно его мы и будем тестировать.Итак, давайте я вам покажу, как использовать элемент DropDown, позволяющий открыть меню выбора. Открываем сайт и видим вот такую форму:
Это простая регистрация. Нам нужно именно меню с выбором страны (country). По умолчанию выбрана Албания.
Давайте получим элемент меню NAME:
country
Отлично, теперь приступаем к коду. Я не буду показывать примеры на ООП, так как это небольшая задача. Если вы хотите, то можете попробовать.
Импортируем библиотеки
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import Select
import time
selenium.webdriver.support.ui import Select
- после того, как мы нашли нужный элемент, мы должны передать его Select'у.Драйвера и переход на сайт
Python:
service = Service('/chromedriver/chromedriver.exe')
browser = webdriver.Chrome(service=service)
browser.get('https://demo.guru99.com/test/newtours/register.php')
Service()
мы указываем путь драйвера, затем передаем это в класс webdriver.Chrome
.Указывем элемент и запускаем
Python:
dropdown = browser.find_element(By.NAME, 'country')
drop = Select(dropdown)
drop.select_by_visible_text("ARUBA")
time.sleep(5)
Select
принимает переменную dropdown, в которой указан элемент самого меню.select_by_visible_text
- при открытии меню мы видим страны, в нашем случае мы выбираем страну ARUBA.UPD 1: select_by_index
Вместо использования
Самый первая страна из список является Албания, но нам нужна именно Алгерия:
select_by_visible_text
вы можете использовать select_by_index
. В отличии от первого, в методе select_by_index можно указывать индексы меню, в нашем случае - стран:Самый первая страна из список является Албания, но нам нужна именно Алгерия:
Python:
drop.select_by_index(1) # ALGERIA
Глава II: Регистрация аккаунта используя демо-сайт
Напишем программу, который зарегистрирует нам аккаунт на тестовом сайте.
Начнем с такой простой формы на сайте:
Для заполнения мы не будем использовать одни и те же данные. Было бы лучше использовать библиотеку
faker
, которая позволяет генерировать нужные данные: имена и фамилии; индекс кода; страна и многое другое. А для создания случайных телефонных номеров я решил использовать библиотеку phone_gen
. Всё это у нас получится связать с Selenium'ом.Faker-
pip install Faker
Доступно в
Ссылка скрыта от гостей
Phone-Gen -
pip install phone-gen
Доступно в
Ссылка скрыта от гостей
Итак, мы видели простую форму регистрации. Она разделены на три блока: Contact Information; mailing information и user information. Для каждых этих блоков я решил сделать отдельные методы, так будет проще.
Импортируем необходимые библиотеки
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
import time
# fake data
from faker import Faker
from phone_gen import PhoneNumber
fake = Faker()
phone_gen
- предназначен для случайной генерации номеров.faker
- нужен для фейковых данных: имя и фамилия; город; индекс и др.Переменная
fake
содержит экземпляр класса Faker().Создаём словарь с необходимыми элементами
Python:
elements_reg = {
"ContactInfo": ["firstName", "lastName", "phone", "userName"],
"MailingInfo": ["address1", "city", "state", "postalCode", "country"],
"UserInfo": ["email", "password", "confirmPassword"]
}
__init__
, но мне кажется, что в словаре будет понятнее.Итак, что мы здесь делаем? Мы создаем ключ
ContactInfo
со значением списка: firstName
lastName
phone
userName
- это элементы полей ввода. Точно так же и с другими ключами.А теперь переменные, класс и конструктор
Python:
# CONTACT INFORMATION
firstname = elements_reg["ContactInfo"][0]
lastname = elements_reg["ContactInfo"][1]
phone_reg = elements_reg["ContactInfo"][2]
email = elements_reg["ContactInfo"][3]
# MAILING INFORMATION
address = elements_reg["MailingInfo"][0]
city = elements_reg["MailingInfo"][1]
state = elements_reg["MailingInfo"][2]
zipcode = elements_reg["MailingInfo"][3]
country = elements_reg["MailingInfo"][4]
# USER INFORMATION
username = elements_reg["UserInfo"][0]
password = elements_reg["UserInfo"][1]
confirm = elements_reg["UserInfo"][2]
class CreateAccount:
def __init__(self, path: str):
self.path = Service() # путь драйвера
self.browser = webdriver.Chrome(service=self.path) # передаем путь
self.url = "https://demo.guru99.com/test/newtours/register.php"
Здесь мы сразу создаем переменные для каждого блока.
Метод contact_information
Задача первая: заполняем блок Contact information:
Python:
def contact_information(self):
# Контактная информация: Имя и Фамилия; номер и e-mail
# First Name
first_name_entry = self.browser.find_element(By.NAME, firstname)
first_name_entry.send_keys(fake.first_name())
time.sleep(1.90)
# Last Name
last_name_entry = self.browser.find_element(By.NAME, lastname)
last_name_entry.send_keys(fake.last_name())
time.sleep(5)
# Phone
phone_entry = self.browser.find_element(By.NAME, phone_reg)
en_phone_get = PhoneNumber("US") # получаем английский номер
number = en_phone_get.get_number()
phone_entry.send_keys(number)
time.sleep(4)
# E-mail
email_entry = self.browser.find_element(By.NAME, email)
email_entry.send_keys(fake.free_email())
time.sleep(1.90)
find_element
передаем элемент поля ввода firstname. Затем мы используем send_keys
, с помощью которого будем вводить случайное имя, используя fake.first_name()
. Для Last Name (фамилия) делаем то же самое.А теперь номер, здесь чуть-чуть по-другому. Мы создали переменную en_phone_get, которая содержит объект
PhoneNumber
. На вход он принимает страну номера (в нашем случае - США). Затем создаем переменную number, в которую записываем номер и вводим его с помощью send_keys
.Ну и последнее, осталось поле E-mail. Здесь нам поможет библиотека Faker, в которой сгенерируем случайный E-Mail с помощью метода
free_email
.Код функции и результат:
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.service import Service
import time
# fake data
from faker import Faker
from phone_gen import PhoneNumber
fake = Faker()
# словарь с данными
elements_reg = {
"ContactInfo": ["firstName", "lastName", "phone", "userName"]
}
# устанавливаем
firstname = elements_reg["ContactInfo"][0]
lastname = elements_reg["ContactInfo"][1]
phone_reg = elements_reg["ContactInfo"][2]
email = elements_reg["ContactInfo"][3]
class CreateAccount:
def __init__(self, path: str):
self.path = Service() # путь драйвера
self.browser = webdriver.Chrome(service=self.path) # передаем путь
self.url = "https://demo.guru99.com/test/newtours/register.php"
def go_to_site(self):
print(f"Переход на сайт регистрации: {self.url}")
self.browser.get(self.url)
time.sleep(3)
def contact_information(self):
# Контактная информация: Имя и Фамилия; номер и e-mail
# First Name
first_name_entry = self.browser.find_element(By.NAME, firstname)
first_name_entry.send_keys(fake.first_name())
time.sleep(1.90)
# Last Name
last_name_entry = self.browser.find_element(By.NAME, lastname)
last_name_entry.send_keys(fake.last_name())
time.sleep(1.90)
# Phone
phone_entry = self.browser.find_element(By.NAME, phone_reg)
en_phone_get = PhoneNumber("US") # получаем английский номер
number = en_phone_get.get_number()
phone_entry.send_keys(number)
time.sleep(1.90)
# E-mail
email_entry = self.browser.find_element(By.NAME, email)
email_entry.send_keys(fake.free_email())
time.sleep(5)
obj = CreateAccount(r'chromedriver\chromedriver.exe')
obj.go_to_site()
obj.contact_information()
Result:
Метод mailing Information
Задача вторая: заполняем mailing Information:
Python:
def mailing_information(self):
# Место проживание: Адрес и город; провинция; zip-code; выбор страны
# Address
address_entry = self.browser.find_element(By.NAME, address)
address_entry.send_keys(fake.street_address())
time.sleep(4)
# City
city_entry = self.browser.find_element(By.NAME, city)
city_entry.send_keys(fake.city())
time.sleep(1.90)
# State/province
state_entry = self.browser.find_element(By.NAME, state)
state_entry.send_keys(fake.state())
time.sleep(1.90)
# Postal Code/zip-code
zipcode_entry = self.browser.find_element(By.NAME, zipcode)
zipcode_entry.send_keys(fake.zipcode())
time.sleep(1.90)
# Country
country_entry = self.browser.find_element(By.NAME, country)
select_country = Select(country_entry)
select_country.select_by_visible_text("UNITED STATES")
Сначала мы получаем случайный адрес с помощью
fake.street_address()
, затем вводим его и устанавливаем задержу. Точно так же и с городом, провинцией и индексом. Единственное изменение - это выборстраны через меню, тут по-умолчанию я выбрал США.Код функции и результат:
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.service import Service
import time
# fake data
from faker import Faker
from phone_gen import PhoneNumber
fake = Faker()
# словарь с данными
elements_reg = {
"ContactInfo": ["firstName", "lastName", "phone", "userName"],
"MailingInfo": ["address1", "city", "state", "postalCode", "country"],
"UserInfo": ["email", "password", "confirmPassword"]
}
# CONTACT INFORMATION
firstname = elements_reg["ContactInfo"][0]
lastname = elements_reg["ContactInfo"][1]
phone_reg = elements_reg["ContactInfo"][2]
email = elements_reg["ContactInfo"][3]
# MAILING INFORMATION
address = elements_reg["MailingInfo"][0]
city = elements_reg["MailingInfo"][1]
state = elements_reg["MailingInfo"][2]
zipcode = elements_reg["MailingInfo"][3]
country = elements_reg["MailingInfo"][4]
# USER INFORMATION
username = elements_reg["UserInfo"][0]
password = elements_reg["UserInfo"][1]
confirm = elements_reg["UserInfo"][2]
class CreateAccount:
def __init__(self, path: str):
self.path = Service() # путь драйвера
self.browser = webdriver.Chrome(service=self.path) # передаем путь
self.url = "https://demo.guru99.com/test/newtours/register.php"
def go_to_site(self):
print(f"Переход на сайт регистрации: {self.url}")
self.browser.get(self.url)
time.sleep(2)
def contact_information(self):
# Контактная информация: Имя и Фамилия; номер и e-mail
# First Name
first_name_entry = self.browser.find_element(By.NAME, firstname)
first_name_entry.send_keys(fake.first_name())
time.sleep(1.90)
# Last Name
last_name_entry = self.browser.find_element(By.NAME, lastname)
last_name_entry.send_keys(fake.last_name())
time.sleep(1.90)
# Phone
phone_entry = self.browser.find_element(By.NAME, phone_reg)
en_phone_get = PhoneNumber("US") # получаем английскую номер
number = en_phone_get.get_number()
phone_entry.send_keys(number)
time.sleep(1.90)
# E-mail
email_entry = self.browser.find_element(By.NAME, email)
email_entry.send_keys(fake.free_email())
time.sleep(3)
def mailing_information(self):
# Место проживание: Адрес и город; провинция; zip-code; выбор страны
# Address
address_entry = self.browser.find_element(By.NAME, address)
address_entry.send_keys(fake.street_address())
time.sleep(4)
# City
city_entry = self.browser.find_element(By.NAME, city)
city_entry.send_keys(fake.city())
time.sleep(1.90)
# State/province
state_entry = self.browser.find_element(By.NAME, state)
state_entry.send_keys(fake.state())
time.sleep(1.90)
# Postal Code/zip-code
zipcode_entry = self.browser.find_element(By.NAME, zipcode)
zipcode_entry.send_keys(fake.zipcode())
time.sleep(1.90)
# Country
country_entry = self.browser.find_element(By.NAME, country)
select_country = Select(country_entry)
select_country.select_by_visible_text("UNITED STATES")
Result:
Метод user_information и нажатий кнопки
Задача третья: заполняем user_information
Python:
def user_information(self):
password_default = "yourpassword"
username_entry = self.browser.find_element(By.NAME, username)
username_entry.send_keys(fake.user_name())
time.sleep(1.90)
password_entry = self.browser.find_element(By.NAME, password)
password_entry.send_keys(password_default)
time.sleep(1.90)
confirm_password_entry = self.browser.find_element(By.NAME, confirm)
confirm_password_entry.send_keys(password_default)
time.sleep(1.90)
def click_start(self):
button_send = self.browser.find_element(By.NAME, 'submit')
button_send.click()
fake.password
пароль все время меняется. Функция click_start
позволяет нажать на кнопку.Сохраняем все полученные данные в JSON
Было бы хорошо полученные данные засунуть в JSON файл. Просто так сделать это не получится. Например, если напишем такой код:
f.write(fake.city()
то данные в файле будут другими, т. к. библиотека просто сгенерирует другие данны.
Пришла мысль, что при вводе текста мы можем извлечь его с помощью такой функции:
Python:
password_entry.get_attribute('value')
Python:
import json
def save_data_to_json(self):
enter_file = input("[ + ] Укажите название нового JSON-файла -> ")
# словарь формат, который JSON должен содержать
aList = [
{"Firstname:": firstname_json, "last_name": lastname_json},
{"Address": address_json, "City": city_json, "State/province": state_json, "Postal code": zip_json, "Country": country_json},
{"Username": username_json, "Password": password_json}
]
jsonstring = json.dumps(aList, indent=4)
with open(enter_file, 'w') as f:
f.write(jsonstring)
Импортируем библиотеку
json
, создаем список aList, который содержит формат данных, который JSON должен сохранить.Так же мы сделали input(), который запрашивает название выходного JSON-файла.
Ну, с регистрацией аккаунта закончено, наконец-то мы это сделали! А вот и полный код:
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.service import Service
import time
import json
# fake data
from faker import Faker
from phone_gen import PhoneNumber
fake = Faker()
# словарь с данными элементов
elements_reg = {
"ContactInfo": ["firstName", "lastName", "phone", "userName"],
"MailingInfo": ["address1", "city", "state", "postalCode", "country"],
"UserInfo": ["email", "password", "confirmPassword"]
}
# CONTACT INFORMATION
firstname = elements_reg["ContactInfo"][0]
lastname = elements_reg["ContactInfo"][1]
phone_reg = elements_reg["ContactInfo"][2]
email = elements_reg["ContactInfo"][3]
# MAILING INFORMATION
address = elements_reg["MailingInfo"][0]
city = elements_reg["MailingInfo"][1]
state = elements_reg["MailingInfo"][2]
zipcode = elements_reg["MailingInfo"][3]
country = elements_reg["MailingInfo"][4]
# USER INFORMATION
username = elements_reg["UserInfo"][0]
password = elements_reg["UserInfo"][1]
confirm = elements_reg["UserInfo"][2]
class CreateAccount:
def __init__(self, path: str):
"""
Настройка...
self.path - объект Service который требует путь драйвера
self.browser - указываем браузер и передаем параметр path
self.url - ссылка регистрации сайта, на котором мы должны перейти
"""
self.path = Service() # путь драйвера
self.browser = webdriver.Chrome(service=self.path) # передаем путь
self.url = "https://demo.guru99.com/test/newtours/register.php"
def go_to_site(self):
print(f"Переход на сайт регистрации: {self.url}")
self.browser.get(self.url)
time.sleep(2)
def contact_information(self):
"""
Здесь мы сразу же находим элементы и вбиваем их.
self.first_name_entry - сам поле ввода FirstName
firstname_json - переменная которая хранит атрибут введенного в поле вводе
точно так же и с другими поля вводами...
"""
# Контактная информация: Имя и Фамилия; номер и e-mail
# First Name
first_name_entry = self.browser.find_element(By.NAME, firstname)
first_name_entry.send_keys(fake.first_name())
global firstname_json
firstname_json = first_name_entry.get_attribute('value')
time.sleep(1.90)
# Last Name
last_name_entry = self.browser.find_element(By.NAME, lastname)
last_name_entry.send_keys(fake.last_name())
global lastname_json
lastname_json = last_name_entry.get_attribute('value')
time.sleep(1.90)
# Phone
phone_entry = self.browser.find_element(By.NAME, phone_reg)
en_phone_get = PhoneNumber("US") # получаем английскую номер
number = en_phone_get.get_number()
phone_entry.send_keys(number)
global phone_json
phone_json = phone_entry.get_attribute('value')
time.sleep(1.90)
# E-mail
email_entry = self.browser.find_element(By.NAME, email)
email_entry.send_keys(fake.free_email())
global email_json
email_json = email_entry.get_attribute('value')
time.sleep(3)
def mailing_information(self):
# Место проживание: Адрес и город; провинция; zip-code; выбор страны
# Address
address_entry = self.browser.find_element(By.NAME, address)
address_entry.send_keys(fake.street_address())
global address_json
address_json = address_entry.get_attribute('value')
time.sleep(4)
# City
city_entry = self.browser.find_element(By.NAME, city)
city_entry.send_keys(fake.city())
global city_json
city_json = city_entry.get_attribute('value')
time.sleep(1.90)
# State/province
state_entry = self.browser.find_element(By.NAME, state)
state_entry.send_keys(fake.state())
time.sleep(1.90)
global state_json
state_json = state_entry.get_attribute('value')
# Postal Code/zip-code
zipcode_entry = self.browser.find_element(By.NAME, zipcode)
zipcode_entry.send_keys(fake.zipcode())
time.sleep(1.90)
global zip_json
zip_json = zipcode_entry.get_attribute('value')
# Country
country_entry = self.browser.find_element(By.NAME, country)
select_country = Select(country_entry)
select_country.select_by_visible_text("UNITED STATES")
global country_json
country_json = country_entry.get_attribute('value')
def user_information(self):
password_default = "codeby!@$444"
username_entry = self.browser.find_element(By.NAME, username)
username_entry.send_keys(fake.user_name())
time.sleep(1.90)
global username_json
username_json = username_entry.get_attribute('value')
password_entry = self.browser.find_element(By.NAME, password)
password_entry.send_keys(password_default)
time.sleep(1.90)
global password_json
password_json = password_entry.get_attribute('value')
confirm_password_entry = self.browser.find_element(By.NAME, confirm)
confirm_password_entry.send_keys(password_default)
time.sleep(1.90)
def click_start(self):
button_send = self.browser.find_element(By.NAME, 'submit')
button_send.click()
def save_data_to_json(self):
"""
Сохранение в JSON формате
создаем переменную enter_file он от нас требует название джсон файла
переменная alist содержит формат отображение даты.
"""
enter_file = input("[ + ] Укажите название нового JSON-файла -> ")
# словарь формат, который JSON должен содержать
aList = [
{"Firstname:": firstname_json, "last_name": lastname_json, "Phone": phone_json, "E-mail": email_json},
{"Address": address_json, "City": city_json, "State/province": state_json, "Postal code": zip_json, "Country": country_json},
{"Username": username_json, "Password": password_json}
]
jsonstring = json.dumps(aList, indent=4)
with open(enter_file, 'w') as f:
f.write(jsonstring)
def all_function_start(self):
"""Собираем все эти методы в один метод"""
self.go_to_site()
self.contact_information()
self.mailing_information()
self.user_information()
self.click_start()
self.save_data_to_json()
# завершение...
def main()
obj = CreateAccount(r'chromedriver\chromedriver.exe')
obj.all_function_start()
if __name__ == "__main__":
main()
Чистый JSON файл:
Завершение...
Вы научились взаимодействовать с сайтом и так же регистрировать аккаунт. Надеюсь, вам понравилась моя статья. Так же буду благодарен за нахождение ошибок в статье.
Решил оставить шпаргалочку здесь.
Библиотека Faker | Показывает: |
---|
fake.first_name() | Имя человека; |
fake.last_name() | Фамилия человека; |
en_phone_get = PhoneNumber("US") | Получение американского номера; |
fake.free_email() | Почта(yahoo, gmail, yandex) |
fake.street_address() | Адрес улицы человека; |
fake.city() | Город; |
fake.state() | Штат/провинция; |
fake.zipcode() | Индекс код; |
fake.username() | Никнейм человека. |
Мануалы которые вам помогут
Selenium Documentation Python -
Ссылка скрыта от гостей
Faker Documantation Pyhon -
Ссылка скрыта от гостей
Ооп Python -
Ссылка скрыта от гостей
Установка Selenium и реальное применение -
click()
Последнее редактирование модератором: