Идея простая: не знаю можно ли это реализовать.
Есть текстовое поле, в которое каждый раз нужно вводить разные\рандомные значения
В python можно через массив, в selenium смотрел, есть функция random
Но как лучше сделать не знаю.
есть библиотека faker для python.
но я бы использовал реальный емеил gmail - куда через + дописывал бы какие то значения.
A потом проверять через апи - или пришел емеил + его можно провалидировать.
import random
# ....
def Generate_User(user, out="account"):
chache = [1,2,3,4,5,6,7,8,9,0]*10
random.shuffle(chache)
buf = ""
for i in range(0, 10):
buf += str(chache.pop())
# ....
user.email = "alexpro" + buf + "@yopmail.com"
# ....
with open(out, "a") as file:
file.write(user.email + "\n")
file.close()
Кусочек кастомной функции для генерации юзера + email на почтовом сервисе не требующий регистрации, рандом чисел через список (масив) и сохранение email в файл
Спасибо, сделал, все круто, для даного тестирования подойдет и фейковый имелй, но интересно как сделать второй вариант, что вы описали: если не сложно хотя бы в общих чертах ибо еще не силен в этом
@Alexander_Tunick
суть в том что бы настроить для своего gmail аккаунта доступ по api . получается что ты выполняешь на selenium какие то действия (например - регистрация емейла ), а потом заходишь на свой gmail и смотришь что письмо пришло и что в нем есть нужные атрибуты.
вот старые куски кода которые не совсем ООП ) но в свое время работали
берем последнее письмо
def get_last_email(user_email, email_password):
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login(user_email, email_password)
mail.list()
# Out: list of "folders" aka labels in gmail.
mail.select("inbox") # connect to inbox.
result, data = mail.search(None, "ALL")
ids = data[0] # data is a list.
id_list = ids.split() # ids is a space separated string
latest_email_id = id_list[-1] # get the latest
result, data = mail.fetch(latest_email_id, "(RFC822)") # fetch the email body (RFC822) for the given ID
raw_email = data[0][1] # here's the body, which is raw text of the whole email
# including headers and alternate payloads
convert_email_to_text = email.message_from_string(raw_email)
a = convert_email_to_text.get_payload()
return len(str(a)), str(a)
после тестов я всегда удалял письма
def delete_all_email(user_email, email_password):
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login(user_email, email_password)
mail.list()
# Out: list of "folders" aka labels in gmail.
mail.select("inbox") # connect to inbox.
typ, data = mail.search(None, 'ALL')
for num in data[0].split():
mail.store(num, '+FLAGS', '\\Deleted')
mail.expunge()
Если тебе нужно вводить рандомные (уникальные) данные в поле чтобы пройти по тесту дальше и они не требуют верификации но нужна валидация формата строки “name@server.any” в форме то генеришь рандом строку + "@gmail.com" и вперед! ))
import random
# ....
def GenKey():
array = [chr(i) for i in range(65, 91)]
# список array = ['A', 'B', 'C' ... 'Z']
random.shuffle(array)
key = ""
for i in range(5): # length of key
key += array.pop()
return key
# ....
browser = webdriver.Chrome()
# ....
while True:
element = browser.find_element_by_name("device_id")
element.clear()
# GenKey() возвращает что то типа JDUHW
# можешь склеить и прибавить @gmail.com
# и получишь JDUHW@gmail.com
element.send_keys(GenKey())
element.send_keys(Keys.ENTER)
formDisplay(browser)