Рефракторинг, исправлен бросок монетки при выборе профессии

This commit is contained in:
2020-04-21 21:48:45 +03:00
parent 255f8df6dc
commit c8fd8b60ec

View File

@@ -11,7 +11,8 @@ from datetime import datetime
def button_by_text(text): # получение кнопки по тексту на ней def button_by_text(text): # получение кнопки по тексту на ней
try: try:
button = driver.find_element_by_xpath(f'//*[contains(text(), "{text}")]') button = driver.find_element_by_xpath(
f'//*[contains(text(), "{text}")]')
button.click() button.click()
return True return True
except Exception: except Exception:
@@ -19,11 +20,12 @@ def button_by_text(text): # получение кнопки по тексту н
def get_profession(): # получение случайной профессии в РФ, где 1 и 2 диапазон - профессии рабочих, 2 и 3 - должности служащих def get_profession(): # получение случайной профессии в РФ, где 1 и 2 диапазон - профессии рабочих, 2 и 3 - должности служащих
while True:
coin = (1, 2, 3, 4) coin = (1, 2, 3, 4)
coin = random.choices(coin, [0.1, 0.1, 0.4, 0.4], k=1)[0] coin = random.choices(coin, [0.1, 0.1, 0.4, 0.4], k=1)[0]
while True:
if coin == 1: if coin == 1:
code = random.randint(10003, 19975) code = random.randint(10003, 19975)
elif coin == 2: elif coin == 2:
@@ -47,63 +49,77 @@ def profile_maker():
global areas_of_activity global areas_of_activity
forms_list = driver.find_elements_by_class_name('freebirdFormviewerViewItemsItemItem') # получение форм со страницы forms_list = driver.find_elements_by_class_name(
'freebirdFormviewerViewItemsItemItem') # получение форм со страницы
for form in forms_list: for form in forms_list:
header = form.find_element_by_class_name('freebirdFormviewerViewItemsItemItemHeader').text # получение заголовка формы header = form.find_element_by_class_name(
'freebirdFormviewerViewItemsItemItemHeader').text # получение заголовка формы
if header[-1:] == '*': if header[-1:] == '*':
header = header[:-2] header = header[:-2]
if header == 'Укажите Ваш пол': if header == 'Укажите Ваш пол':
buttons_list = form.find_elements_by_class_name('appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы buttons_list = form.find_elements_by_class_name(
'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы
button = random.choices(buttons_list, [0.7, 0.3], k=1)[0] button = random.choices(buttons_list, [0.7, 0.3], k=1)[0]
button.click() button.click()
elif header == 'Укажите Ваш возраст (полных лет)': elif header == 'Укажите Ваш возраст (полных лет)':
age = random.randint(18, 56) age = random.randint(18, 56)
field = form.find_elements_by_class_name('quantumWizTextinputPaperinputInput')[0] # получение полей для ввода с формы field = form.find_elements_by_class_name('quantumWizTextinputPaperinputInput')[
0] # получение полей для ввода с формы
field.click() field.click()
field.send_keys(age) field.send_keys(age)
elif header == 'Укажите Ваше образование (возможно несколько вариантов)': elif header == 'Укажите Ваше образование (возможно несколько вариантов)':
buttons_list = form.find_elements_by_class_name('quantumWizTogglePapercheckboxEl') # получение чекбоксов с формы buttons_list = form.find_elements_by_class_name(
'quantumWizTogglePapercheckboxEl') # получение чекбоксов с формы
buttons_list[random.randint(0, 4)].click() buttons_list[random.randint(0, 4)].click()
elif header == 'Выберите из списка основную сферу деятельности организации, в которой Вы сейчас работаете': elif header == 'Выберите из списка основную сферу деятельности организации, в которой Вы сейчас работаете':
form.find_elements_by_class_name('quantumWizMenuPaperselectOption')[0].click() form.find_elements_by_class_name(
'quantumWizMenuPaperselectOption')[0].click()
coin = random.randint(3, 24) coin = random.randint(3, 24)
variants_list = form.find_element_by_xpath(f'//*[@id="mG61Hd"]/div/div/div[2]/div[5]/div/div[2]/div[2]/div[{coin}]') # перебор элементов выпадающего списка variants_list = form.find_element_by_xpath(
f'//*[@id="mG61Hd"]/div/div/div[2]/div[5]/div/div[2]/div[2]/div[{coin}]') # перебор элементов выпадающего списка
variants_list.click() variants_list.click()
time.sleep(3) time.sleep(3)
elif header == 'Укажите Ваш стаж работы (полных лет) в указанной организации': elif header == 'Укажите Ваш стаж работы (полных лет) в указанной организации':
buttons_list = form.find_elements_by_class_name('appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы buttons_list = form.find_elements_by_class_name(
'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы
buttons_list[random.randint(0, len(buttons_list) - 1)].click() buttons_list[random.randint(0, len(buttons_list) - 1)].click()
elif header == 'Укажите тип Вашей должности': elif header == 'Укажите тип Вашей должности':
buttons_list = form.find_elements_by_class_name('appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы buttons_list = form.find_elements_by_class_name(
'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы
buttons_list[random.randint(0, len(buttons_list) - 1)].click() buttons_list[random.randint(0, len(buttons_list) - 1)].click()
elif header == 'Укажите название Вашей должности': elif header == 'Укажите название Вашей должности':
field = form.find_elements_by_class_name('quantumWizTextinputPapertextareaInput')[0] # получение полей для ввода с формы field = form.find_elements_by_class_name('quantumWizTextinputPapertextareaInput')[
0] # получение полей для ввода с формы
field.click() field.click()
field.send_keys(get_profession()) field.send_keys(get_profession())
elif header == 'Укажите Ваш стаж работы в текущей должности (полных лет)': elif header == 'Укажите Ваш стаж работы в текущей должности (полных лет)':
buttons_list = form.find_elements_by_class_name('appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы buttons_list = form.find_elements_by_class_name(
'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы
buttons_list[random.randint(0, len(buttons_list) - 1)].click() buttons_list[random.randint(0, len(buttons_list) - 1)].click()
def bulldozer(): def bulldozer():
forms_list = driver.find_elements_by_class_name('freebirdFormviewerViewItemsItemItem') # получение форм со страницы forms_list = driver.find_elements_by_class_name(
'freebirdFormviewerViewItemsItemItem') # получение форм со страницы
for form in forms_list: for form in forms_list:
header = form.find_element_by_class_name('freebirdFormviewerViewItemsItemItemHeader').text # получение заголовка формы header = form.find_element_by_class_name(
'freebirdFormviewerViewItemsItemItemHeader').text # получение заголовка формы
if header[-1:] == '*': if header[-1:] == '*':
header = header[:-2] header = header[:-2]
buttons_list = form.find_elements_by_class_name('appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы buttons_list = form.find_elements_by_class_name(
'appsMaterialWizToggleRadiogroupRadioButtonContainer') # получение кнопок-радио с формы
buttons_list[random.randint(0, len(buttons_list) - 1)].click() buttons_list[random.randint(0, len(buttons_list) - 1)].click()
@@ -112,7 +128,6 @@ if __name__ == '__main__':
url = 'https://docs.google.com/forms/d/1f716YOLUrKhtjTlR4hYiEWkgwjqylR5fCPxWsHQKJqY' url = 'https://docs.google.com/forms/d/1f716YOLUrKhtjTlR4hYiEWkgwjqylR5fCPxWsHQKJqY'
resnondents = int(input('Введите желаемое число респондентов: ')) resnondents = int(input('Введите желаемое число респондентов: '))
driver = webdriver.Firefox() driver = webdriver.Firefox()
with progressbar.ProgressBar(max_value=resnondents) as bar: with progressbar.ProgressBar(max_value=resnondents) as bar:
@@ -126,20 +141,11 @@ if __name__ == '__main__':
profile_maker() profile_maker()
button_by_text('Далее') while True:
if button_by_text('Далее'):
bulldozer() bulldozer()
else:
button_by_text('Далее')
bulldozer()
button_by_text('Далее')
button_by_text('Отправить') button_by_text('Отправить')
driver.close() driver.close()