· 6 years ago · Sep 24, 2019, 11:10 AM
1import time
2import unittest
3import selenium
4from selenium import webdriver
5from selenium.webdriver.common.keys import Keys
6from selenium.webdriver.common.by import By
7from selenium.webdriver.support.ui import WebDriverWait # ожидания различных событий
8from selenium.webdriver.support.ui import Select # работа со списками
9from selenium.webdriver.support.ui import WebDriverWait
10from selenium.webdriver.support import expected_conditions as ec
11from selenium.webdriver.common.action_chains import ActionChains # lля сколинга к нужному элементу импортируем класс ActionChains
12from random import randint
13import string
14
15class create_zavadenie(unittest.TestCase):
16
17
18 def my_metho_with_predlojenie(self, kolvo_bukv_v_slove, count_slov, count_predlojeniy):
19
20 list_predloj = []
21
22 for k in range(count_predlojeniy): # цикл по колву предло;ений
23 list_slov = []
24 # kolvo_bukv_v_slove = randint(3,5) # генерим ково букв в i-ом слове
25
26 for i in range(count_slov): # цикл по колву слов, будет 5 слов строке
27
28 list_bukv = []
29 for j in range(kolvo_bukv_v_slove): # цикл по буквам в i-ом слове
30
31 list_bukv.append(' '.join([self.list_characters[randint(0, len(self.list_characters) - 1)]]))
32
33 list_slov.append(''.join(list_bukv))
34
35 list_predloj.append(' '.join(list_slov) + '.')
36
37 return str(' '.join(list_predloj))
38
39
40 def my_metho_randem_stroka(self, kolvo_bukv_v_slove, count_slov): # генерит предложение
41
42 list_slov = []
43 # kolvo_bukv_v_slove = randint(3,5) # генерим ково букв в i-ом слове
44
45 for i in range(count_slov): # цикл по колву слов, будет 5 слов строке
46
47 list_bukv = []
48 for j in range(kolvo_bukv_v_slove): # цикл по бкувам в i-ом слове
49
50 list_bukv.append(' '.join([self.list_characters[randint(0, len(self.list_characters) - 1)]]))
51
52 list_slov.append(''.join(list_bukv))
53
54 return str(' '.join(list_slov))
55
56
57
58
59 def generation_tel_phone(self): # генерит номер телфона
60
61 list_digits = []
62 for i in range(0, 11):
63 if i != 0:
64 # print(string.digits[randint(0,9)]) # 0123456789
65 list_digits.append(string.digits[randint(1, 9)])
66
67 # print(list_digits)
68
69 return str(str(8) + ''.join(list_digits))
70
71
72
73 def my_metho_randem_stroka_for_email(self, kolvo_bukv_v_slove, count_slov):
74
75 list_characters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
76 'S', 'T', 'U', 'W', 'X', 'Y', 'Z',
77 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'k', 'm', 'n', 'o', 'p', 'q', 'r',
78 's', 't', 'u', 'w', 'x', 'y', 'z',
79 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_', '.'] # добавить символы !, ? , *, %, #, $, ~
80
81 list_slov = []
82 # kolvo_bukv_v_slove = randint(3,5) # генерим ково букв в i-ом слове
83
84 for i in range(count_slov): # цикл по колву слов, будет 5 слов строке
85
86 list_slov = []
87 # kolvo_bukv_v_slove = randint(3,5) # генерим ково букв в i-ом слове
88
89 for i in range(count_slov): # цикл по колву слов, будет 5 слов строке
90
91 list_bukv = []
92 for j in range(kolvo_bukv_v_slove): # цикл по бкувам в i-ом слове
93
94 list_bukv.append(' '.join([list_characters[randint(0, len(list_characters) - 1)]]))
95
96 list_slov.append(''.join(list_bukv))
97
98 for_email = {0: "@yandex.ru", 1: "@mail.ru", 2: "@gmail.com",
99 3:"@yahoo.com", 4:"@felisadipiscing.edu", 5:"@aarcu.net", 6:"@sempereratin.edu", 7:"@estMauriseu.net", 8:"@pharetra.co.uk", 9:"@ut.ca", 10: "@felisDonectempor.org"}
100
101 return str(' '.join(list_slov)) + for_email[randint(0, len(for_email)-1)]
102
103
104
105
106
107
108 def setUp(self):
109 self.driver = webdriver.Chrome()
110
111 #self.driver.set_window_position(0, 0) # устанавливает позицию левого верзнего угла окна браузера
112 self.driver.set_window_size(1440, 900) # устанавливае мразмеры окна
113
114
115 #self.driver.maximize_window()
116 # self.driver.implicitly_wait(10) # для явных ожиданий, будет вызываться перед каждвм методом find_element()
117
118 self.list_characters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
119 'R', 'S',
120 'T', 'U', 'W', 'X', 'Y', 'Z',
121 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'k', 'm', 'n', 'o', 'p', 'q',
122 'r', 's',
123 't', 'u', 'w', 'x', 'y', 'z', 'A'
124 ' '] # поле
125
126
127
128 def test_create_zavedenie_method_(self): # главный метод, надо чтобы он начинался с test_
129
130 driver = self.driver
131
132 driver.get("https://admin.preorder.technaxis.com/external/login")
133
134 time.sleep(2) # чтобы сразу окно не закрывалось
135 WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//input[@formcontrolname='login']"))).send_keys("superadmin@mail.ru")
136
137 time.sleep(2)
138 WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//input[@formcontrolname='password']"))).send_keys("password")
139
140 time.sleep(2)
141
142 WebDriverWait(driver, 10).until(ec.presence_of_all_elements_located((By.XPATH, "//button[@type='button']")))[1].click()
143
144 time.sleep(5)
145
146 #кнпока Добавить заведение:
147 WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//button[@class='header-action-button mat-flat-button mat-primary ng-star-inserted']"))).click()
148
149 time.sleep(2)
150
151 # # жмемна спсиок выбора города:
152 WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//div[@class='mat-select-value']"))).click()
153
154
155 time.sleep(2)
156 # список городов:
157 list_cities = WebDriverWait(driver, 10).until(ec.presence_of_all_elements_located((By.XPATH, "//mat-option[@class='mat-option ng-star-inserted']")))
158
159 # выбираем рандомный город и жмем на него
160 WebDriverWait(driver, 10).until(ec.presence_of_all_elements_located((By.XPATH, "//mat-option[@class='mat-option ng-star-inserted']")))[randint(0, len(list_cities) - 1)].click() #
161
162 time.sleep(2)
163
164 WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//input[@formcontrolname='managerFullName']"))).send_keys(self.my_metho_randem_stroka(randint(4,7),3) )
165
166 time.sleep(2)
167
168 WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//input[@placeholder='Идентификатор магазина']"))).send_keys("45279fdf-eed9-4c4d-89d2-b46a40f18496")
169
170
171 # # кликаем по инконке фото(крестик)
172 WebDriverWait(driver, 10).until(ec.presence_of_all_elements_located((By.XPATH,"//mat-icon[@class='mat-icon notranslate material-icons mat-icon-no-color']")))[0].click()
173 #
174 time.sleep(2)
175 #
176 file_dicitionary = {0: "/Users/rufina/Desktop/dishs/BjJ6inaYiWam0GGViLFHLQ-double.jpg",
177 1: "/Users/rufina/Desktop/dishs/4Rve51WmWfk.jpg", 2: "/Users/rufina/Desktop/dishs/2531.jpg",
178 3: "/Users/rufina/Desktop/dishs/salat_kinoa.jpg__1499258543__50030.jpg",
179 4: "/Users/rufina/Desktop/dishs/4703.jpg", 5: "/Users/rufina/Desktop/dishs/caption (1).jpg"}
180
181 WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//input[@type='file']"))).send_keys(file_dicitionary[randint(0, len(file_dicitionary) - 1)])
182
183 time.sleep(2)
184
185 # название заведения
186 WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, "//input[@formcontrolname='companyName']"))).send_keys(self.my_metho_randem_stroka(randint(4, 7), 3))
187
188 time.sleep(2)
189
190 # ФИО представителя завденеия
191 WebDriverWait(driver, 10).until(
192 ec.presence_of_element_located((By.XPATH, "//input[@formcontrolname='representativeFullName']"))).send_keys(
193 self.my_metho_randem_stroka(randint(4, 7), 3))
194
195 time.sleep(2)
196
197 # номер телефона
198 WebDriverWait(driver, 10).until(
199 ec.presence_of_element_located((By.XPATH, "//input[@formcontrolname='phone']"))).send_keys(self.generation_tel_phone())# генерит номер телефона
200
201 time.sleep(2)
202
203 # доп. номер телефона
204 WebDriverWait(driver, 10).until(
205 ec.presence_of_element_located((By.XPATH, "//input[@formcontrolname='administratorPhone']"))).send_keys(self.generation_tel_phone())
206
207 time.sleep(2)
208
209 # поле Емейл
210 WebDriverWait(driver, 10).until(
211 ec.presence_of_element_located((By.XPATH, "//input[@formcontrolname='email']"))).send_keys(self.my_metho_randem_stroka_for_email(randint(3, 7), 1))
212
213 time.sleep(2)
214
215 # поле Пароль
216 password_8 = WebDriverWait(driver, 10).until(
217 ec.presence_of_element_located((By.XPATH, "//input[@formcontrolname='password']"))).send_keys(
218 "password") # self.my_metho_randem_stroka(randint(7, 12), 1)
219
220 time.sleep(2)
221 #print(password_8.text)
222
223 #
224 # # полправить здесь:
225 WebDriverWait(driver, 10).until(
226 ec.presence_of_element_located((By.XPATH, "//input[@formcontrolname='dPassword']"))).send_keys("password")
227
228 time.sleep(2)
229
230 # поле Адрес
231 WebDriverWait(driver, 10).until(
232 ec.presence_of_element_located((By.XPATH, "//input[@placeholder='Адрес']"))).send_keys("проспект Хусаина Ямашева, 115 А, город Казань, Республика Татарстан, Россия")
233
234 time.sleep(2)
235
236 WebDriverWait(driver, 10).until(
237 ec.presence_of_element_located((By.XPATH, "//input[@placeholder='Адрес']"))).send_keys(Keys.DOWN + Keys.ENTER) # сперва нажимает на Keys.DOWN потом на Keys.ENTER
238 time.sleep(2)
239
240
241
242
243
244 # чекбоксы Формат заведения
245 for i in range(0, 3): # i=0,1,2
246
247 rand_index = randint(0, 1)
248 print("rand_index_of_zavedenia", rand_index) # рандомный индекс формата завеения
249
250 if rand_index == 1:
251 rand_index -= 1
252
253 format_checkbox = WebDriverWait(driver, 10).until(
254 ec.presence_of_all_elements_located((By.XPATH, "//mat-checkbox[@color='primary']")))[rand_index]
255
256 driver.execute_script("arguments[0].scrollIntoView(true);", format_checkbox) # скроллим к этому заведению
257
258 time.sleep(2)
259 format_checkbox.click()
260 time.sleep(2)
261
262
263
264
265 # #тип Кухня: спсиок кухонь
266 list_cuizins = WebDriverWait(driver, 10).until(
267 ec.presence_of_all_elements_located((By.XPATH, "//mat-checkbox[@color='primary']")))
268
269 for i in range(0, 5):
270 list_cuizins[randint(2, 9)].click() # выбрает рандомный элемент из списка с индексом от 2 до 9 вклбчительно
271 time.sleep(2)
272
273 time.sleep(2)
274
275 # Дополнительно
276 list_cuizins[randint(10, 11)].click()# выбрает рандомный элемент из списка с индексом от 10 до 11 вклбчительно
277
278 time.sleep(2)
279
280
281 # # # Тип меню(Обычное Наборное Комбо),
282 # for i in range(0, 3):
283 #
284 # k = randint(0, 1) # k=1 включительно
285 # print('index equal', k)
286 #
287 # WebDriverWait(driver, 10).until(
288 # ec.presence_of_all_elements_located((By.XPATH,
289 # "//mat-radio-button[@class='mat-radio-button mat-primary ng-star-inserted']")))[k].click() # выбираем ранломный индекс радиобаннттона
290 #
291 # time.sleep(2)
292
293
294 # Пакет(Pro Standart)
295 WebDriverWait(driver, 10).until(
296 ec.presence_of_all_elements_located((By.XPATH,
297 "//mat-radio-button[@class='mat-radio-button mat-primary ng-star-inserted']")))[randint(k, k+1)].click()# выбираем ранломный индекс радиобаннттона
298
299 time.sleep(2)
300
301 for i in range(0, 4):
302 list_cuizins[randint(12, 15)].click() # выбирает рандомный чекбокс
303 time.sleep(2)
304
305 # Процент сервису
306 WebDriverWait(driver, 10).until(
307 ec.presence_of_element_located((By.XPATH, "//input[@placeholder='Процент сервису (%)']"))).send_keys(randint(0, 10))
308 time.sleep(2)
309
310 WebDriverWait(driver, 10).until(
311 ec.presence_of_element_located((By.XPATH, "//input[@placeholder='Процент банку (%)']"))).send_keys(
312 randint(0, 10))
313 time.sleep(2)
314
315 WebDriverWait(driver, 10).until(
316 ec.presence_of_element_located((By.XPATH, "//input[@placeholder='Процент пользователю на бонусы (%)']"))).send_keys(
317 randint(0, 10))
318 time.sleep(2)
319
320 # дни недели
321 for i in range(0, 7):
322 WebDriverWait(driver, 10).until(
323 ec.presence_of_all_elements_located((By.XPATH, "//div[@class='mat-slide-toggle-thumb']")))[i].click() # нажимае мна тогглер
324
325 time.sleep(2)
326
327 for j in range(0, 2):
328 if (i == 0):
329 WebDriverWait(driver, 10).until(
330 ec.presence_of_all_elements_located((By.XPATH, "//div[@class='mat-select-arrow']")))[j+1].click()
331 else:
332 WebDriverWait(driver, 10).until(
333 ec.presence_of_all_elements_located((By.XPATH, "//div[@class='mat-select-arrow']")))[j+1+i*2].click() # нажимаем на малеонки треугольничек Открывается/Закывается
334
335 list_timings = WebDriverWait(driver, 10).until(
336 ec.presence_of_all_elements_located((By.XPATH, "//mat-option[@class='mat-option ng-star-inserted']")))
337
338 list_timings[randint(0, len(list_timings)-1)].click() # выбираем ранломный тайминг из списка
339
340 time.sleep(2)
341
342
343 # краткое описание
344 short_description = WebDriverWait(driver, 10).until(
345 ec.presence_of_element_located((By.XPATH, "//div[@data-placeholder='Краткое описание заведения...']")))
346
347
348
349 driver.execute_script("arguments[0].scrollIntoView(true);", short_description) # скроллим к этому заведению
350 time.sleep(2)
351
352 short_description.send_keys(self.my_metho_with_predlojenie(1, randint(1, 10), randint(5, 10)))
353
354
355 time.sleep(2)
356
357 # # кликаем по инконке фото(крестик)
358 WebDriverWait(driver, 10).until(ec.presence_of_all_elements_located(
359 (By.XPATH, "//mat-icon[@class='mat-icon notranslate material-icons mat-icon-no-color']")))[1].click()
360
361
362 time.sleep(2)
363
364 file_dicitionary_1 = {0: "/Users/rufina/Desktop/dishs/BjJ6inaYiWam0GGViLFHLQ-double.jpg",
365 1: "/Users/rufina/Desktop/dishs/4Rve51WmWfk.jpg", 2: "/Users/rufina/Desktop/dishs/2531.jpg",
366 3: "/Users/rufina/Desktop/dishs/salat_kinoa.jpg__1499258543__50030.jpg",
367 4: "/Users/rufina/Desktop/dishs/4703.jpg", 5: "/Users/rufina/Desktop/dishs/caption (1).jpg"}
368
369
370 WebDriverWait(driver, 10).until(
371 ec.presence_of_all_elements_located((By.XPATH, "//input[@type='file']")))[1].send_keys(file_dicitionary_1[randint(0, len(file_dicitionary_1) - 1)])
372
373 time.sleep(2)
374
375 # клик по тогглеру Опубликовать заведение
376 WebDriverWait(driver, 10).until(
377 ec.presence_of_all_elements_located((By.XPATH, "//div[@class='mat-slide-toggle-thumb']")))[7].click()
378
379 time.sleep(2)
380
381 # кнопка Добавить
382 WebDriverWait(driver, 10).until(
383 ec.presence_of_element_located((By.XPATH, "//button[@class='mat-button mat-flat-button']"))).click()
384
385
386 time.sleep(8)
387
388
389
390 def tear_down(self):
391 time.sleep(5)
392 self.driver.quit()
393 # pass
394
395
396if __name__ == "__main__":
397 unittest.main()