#python #selenium
#python #селен
Вопрос:
Я хочу, чтобы selenium выбирал соответствующий пол на основе строки, которая у меня есть в массиве. Например, если поле ввода содержит одно из женских имен, selenium выберет женский пол,
createProfile_FirstName = driver.find_element_by_id('firstname')
def random_profile():
MaleFname = ['Liam', 'Noah', 'Oliver', 'William', 'Matthew',
'John', 'Adam', 'Richard', 'Robert', 'Michael']
FemaleFname = ['Olivia', 'Emma', 'Ava', 'Sophia', 'Isabella', 'Charlotte',
'Mia', 'Harper', 'Evelyn', 'Ella', 'Sofia', 'Mila', 'Aria']
Fname = MaleFname, FemaleFname
createProfile_FirstName.send_keys(f'{random.choice(random.choices(Fname, weights=map(len, Fname))[0])}')
# Picking a Gender corresponding to the name inputted by random module
if any(MaleFname) in createProfile_FirstName:
selectMale = driver.find_element_by_id('gender1')
selectMale.click()
elif any(FemaleFname) in createProfile_FirstName:
selectMale = driver.find_element_by_id('gender2')
selectMale.click()
Комментарии:
1. У вас он перевернут. Вы должны проверять
if createProfile_FirstName in MaleFname
, не находится ли список в строке.2. Может быть, вам нужно
if any(name in createProfile_FirstName for name in MaleFname):
разрешить, чтобы элемент MaleFname был подстрокой первого заданного имени? Но если вы ожидаете точных совпадений, я согласен с @Rorschach
Ответ №1:
Итак, я только что внес несколько изменений в свой код. И это работает!! Я создал две функции male_profile и female_profile, и у меня есть метод случайного выбора, между которыми нужно запускать. Работает отлично!
# (Creating Profile) First Name
createProfile_FirstName = driver.find_element_by_id('firstname')
def male_profile():
maleFname = ['Liam', 'Noah', 'Oliver', 'William', 'Matthew',
'John', 'Adam', 'Richard', 'Robert', 'Michael',
'Mark', 'Joseph', 'Thomas', 'Charles', 'Donald',
'Jackson', 'Jack', 'Levi', 'David', 'Sam', 'Samuel',
'Mateo', 'Sebastian', 'Logan', 'Jacob', 'Henry', 'Ben',
'Hudson', 'Adrian', 'Colton', 'Nolan', 'Maverick', 'Aaron',
'Caleb', 'Andrew', 'Ryan', 'Cooper', 'Chase', 'Cole', 'Silas',
'Jason', 'Emmentt', 'Bryson', 'Vincent', 'Luis', 'Cody', 'Ali']
createProfile_FirstName.send_keys(random.choice(maleFname))
selectMale = driver.find_element_by_id('gender1')
selectMale.click()
def female_profile():
femaleFname = ['Olivia', 'Emma', 'Ava', 'Sophia', 'Isabella', 'Charlotte',
'Mia', 'Harper', 'Evelyn', 'Ella', 'Sofia', 'Mila', 'Aria',
'Maria', 'Natalia', 'Lydia', 'Julia', 'Ruth', 'Lola', 'Izabella',
'Nina', 'Margot', 'Gia', 'Nadia', 'Skyla', 'Julie', 'Irene', 'Greta',
'Savanna', 'Aubrie', 'Ashlynn', 'Sasha', 'Alexia', 'Lara', 'Tiffany']
createProfile_FirstName.send_keys(random.choice(femaleFname))
selectFemale = driver.find_element_by_id('gender2')
selectFemale.click()
profilePicker = [male_profile, female_profile]
for i in range(1):
random.choice(profilePicker)()
Комментарии:
1. Поскольку вы не используете переменную
selectMale
, эти две строки можно сократить доdriver.find_element_by_id('gender1').click()
. То же самое дляselectFemale
. Мое общее правило — не создавайте переменную, если вы не собираетесь ее использовать.