Commit ea05cf1d4856bb9fdec489537d449129fb289ed3
Merge branches 'flux_capacitor' and 'master'
Conflicts: op_robot_tests/tests_files/brokers/etender.robot op_robot_tests/tests_files/data/brokers.yaml op_robot_tests/tests_files/data/users.yaml op_robot_tests/tests_files/service_keywords.py
Showing
9 changed files
with
1755 additions
and
137 deletions
... | ... | @@ -4,60 +4,352 @@ Library String |
4 | 4 | Library DateTime |
5 | 5 | |
6 | 6 | *** Variables *** |
7 | -${locator.tenderId} jquery=h3 | |
8 | -${locator.title} jquery=tender-subject-info>div.row:contains("Назва закупівлі:")>:eq(1)> | |
9 | -${locator.description} jquery=tender-subject-info>div.row:contains("Детальний опис закупівлі:")>:eq(1)> | |
10 | -${locator.minimalStep.amount} jquery=tender-subject-info>div.row:contains("Мінімальний крок аукціону, грн.:")>:eq(1)> | |
11 | -${locator.procuringEntity.name} jquery=customer-info>div.row:contains("Найменування:")>:eq(1)> | |
12 | -${locator.value.amount} jquery=tender-subject-info>div.row:contains("Повний доступний бюджет закупівлі, грн.:")>:eq(1)> | |
13 | -${locator.tenderPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок прийому пропозицій:")>:eq(1)> | |
14 | -${locator.tenderPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення прийому пропозицій:")>:eq(1)> | |
15 | -${locator.enquiryPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок періоду уточнень:")>:eq(1)> | |
16 | -${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення періоду уточнень:")>:eq(1)> | |
7 | +${locator.tenderId} jquery=h3 | |
8 | +${locator.title} jquery=tender-subject-info>div.row:contains("Назва закупівлі:")>:eq(1)> | |
9 | +${locator.description} jquery=tender-subject-info>div.row:contains("Детальний опис закупівлі:")>:eq(1)> | |
10 | +${locator.minimalStep.amount} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[9] | |
11 | +${locator.procuringEntity.name} jquery=customer-info>div.row:contains("Найменування:")>:eq(1)> | |
12 | +${locator.value.amount} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[8] | |
13 | +${locator.tenderPeriod.startDate} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[3] | |
14 | +${locator.tenderPeriod.endDate} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[4] | |
15 | +${locator.enquiryPeriod.startDate} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[1] | |
16 | +${locator.enquiryPeriod.endDate} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[2] | |
17 | +${locator.items[0].description} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[12] | |
18 | +${locator.items[0].deliveryDate.endDate} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[14] | |
19 | +${locator.items[0].deliveryLocation.latitude} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[15] | |
20 | +${locator.items[0].deliveryLocation.longitude} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[15] | |
21 | +${locator.items[0].deliveryAddress.postalCode} xpath=//div[@class='col-sm-8']//span[@ng-if='item.deliveryAddress.postIndex'] | |
22 | +${locator.items[0].deliveryAddress.countryName} xpath=//div[@class='col-sm-8']//span[@ng-if='item.deliveryAddress.country.title'] | |
23 | +${locator.items[0].deliveryAddress.region} xpath=//div[@class='col-sm-8']//span[@ng-if='item.deliveryAddress.region.title'] | |
24 | +${locator.items[0].deliveryAddress.locality} xpath=//div[@class='col-sm-8']//span[@ng-if='item.deliveryAddress.city.title'] | |
25 | +${locator.items[0].deliveryAddress.streetAddress} xpath=//div[@class='col-sm-8']//span[@ng-if='item.deliveryAddress.addressStr'] | |
26 | +${locator.items[0].classification.scheme} xpath=(//div[@class = 'col-sm-4']/p)[11] | |
27 | +${locator.items[0].classification.id} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[10] | |
28 | +${locator.items[0].classification.description} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[10] | |
29 | +${locator.items[0].additionalClassifications[0].scheme} xpath=(//div[@class = 'col-sm-4']/p)[12] | |
30 | +${locator.items[0].additionalClassifications[0].id} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[11] | |
31 | +${locator.items[0].additionalClassifications[0].description} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[11] | |
32 | +${locator.items[0].unit.code} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[13] | |
33 | +${locator.items[0].quantity} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[13] | |
34 | +${locator.questions[0].title} xpath=(//div[@class='col-sm-10']/span[@class='ng-binding'])[2] | |
35 | +${locator.questions[0].description} xpath=(//div[@class='col-sm-10']/span[@class='ng-binding'])[3] | |
36 | +${locator.questions[0].date} xpath=(//div[@class='col-sm-10']/span[@class='ng-binding'])[1] | |
37 | +${locator.questions[0].answer} xpath=(//div[@textarea='question.answer']/pre[@class='ng-binding'])[1] | |
17 | 38 | |
18 | 39 | *** Keywords *** |
40 | +Підготувати дані для оголошення тендера | |
41 | + ${INITIAL_TENDER_DATA}= prepare_test_tender_data | |
42 | + ${INITIAL_TENDER_DATA}= Add_data_for_GUI_FrontEnds ${INITIAL_TENDER_DATA} | |
43 | + [return] ${INITIAL_TENDER_DATA} | |
44 | + | |
19 | 45 | Підготувати клієнт для користувача |
20 | - [Arguments] ${username} | |
46 | + [Arguments] @{ARGUMENTS} | |
21 | 47 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо |
22 | - Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${username} | |
23 | - Set Window Position @{USERS.users['${username}'].position} | |
24 | - Set Window Size @{USERS.users['${username}'].size} | |
25 | - Log Variables | |
48 | + ... ${ARGUMENTS[0]} == username | |
49 | + Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | |
50 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | |
51 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | |
52 | + Run Keyword If '${ARGUMENTS[0]}' != 'E-tender_Viewer' Login | |
53 | + | |
54 | +Login | |
55 | + Wait Until Page Contains Element id=inputUsername 10 | |
56 | + Input text id=inputUsername ${USERS.users['${username}'].login} | |
57 | + Wait Until Page Contains Element id=inputPassword 10 | |
58 | + Input text id=inputPassword ${USERS.users['${username}'].password} | |
59 | + Click Button id=btn_submit | |
60 | + | |
61 | +Створити тендер | |
62 | + [Arguments] @{ARGUMENTS} | |
63 | + [Documentation] | |
64 | + ... ${ARGUMENTS[0]} == username | |
65 | + ... ${ARGUMENTS[1]} == tender_data | |
66 | + ${INITIAL_TENDER_DATA}= procuringEntity_name ${INITIAL_TENDER_DATA} | |
67 | + ${tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]} | |
68 | + ${items}= Get From Dictionary ${tender_data.data} items | |
69 | + ${title}= Get From Dictionary ${tender_data.data} title | |
70 | + ${description}= Get From Dictionary ${tender_data.data} description | |
71 | + ${budget}= Get From Dictionary ${tender_data.data.value} amount | |
72 | + ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount | |
73 | + ${items_description}= Get From Dictionary ${items[0]} description | |
74 | + ${quantity}= Get From Dictionary ${items[0]} quantity | |
75 | + ${cpv}= Get From Dictionary ${items[0].classification} id | |
76 | + ${unit}= Get From Dictionary ${items[0].unit} name | |
77 | + ${latitude} Get From Dictionary ${items[0].deliveryLocation} latitude | |
78 | + ${longitude} Get From Dictionary ${items[0].deliveryLocation} longitude | |
79 | + ${postalCode} Get From Dictionary ${items[0].deliveryAddress} postalCode | |
80 | + ${streetAddress} Get From Dictionary ${items[0].deliveryAddress} streetAddress | |
81 | + ${deliveryDate} Get From Dictionary ${items[0].deliveryDate} endDate | |
82 | + ${deliveryDate} convert_date_to_etender_format ${deliveryDate} | |
83 | + ${start_date}= Get From Dictionary ${tender_data.data.tenderPeriod} startDate | |
84 | + ${start_date}= convert_date_to_etender_format ${start_date} | |
85 | + ${start_time}= Get From Dictionary ${tender_data.data.tenderPeriod} startDate | |
86 | + ${start_time}= convert_time_to_etender_format ${start_time} | |
87 | + ${end_date}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate | |
88 | + ${end_date}= convert_date_to_etender_format ${end_date} | |
89 | + ${end_time}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate | |
90 | + ${end_time}= convert_time_to_etender_format ${end_time} | |
91 | + ${enquiry_end_date}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate | |
92 | + ${enquiry_end_date}= convert_date_to_etender_format ${enquiry_end_date} | |
93 | + ${enquiry_end_time}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate | |
94 | + ${enquiry_end_time}= convert_time_to_etender_format ${enquiry_end_time} | |
95 | + | |
96 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
97 | + Wait Until Page Contains Мої закупівлі 10 | |
98 | + Sleep 1 | |
99 | + Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі'] | |
100 | + Wait Until Page Contains Element xpath=//a[contains(@class, 'btn btn-info')] | |
101 | + Sleep 1 | |
102 | + Click Element xpath=//a[contains(@class, 'btn btn-info')] | |
103 | + Wait Until Page Contains Element id=title | |
104 | + Input text id=title ${title} | |
105 | + Input text id=description ${description} | |
106 | + Input text id=value ${budget} | |
107 | + Click Element xpath=//div[contains(@class, 'form-group col-sm-6')]//input[@type='checkbox'] | |
108 | + Input text id=minimalStep ${step_rate} | |
109 | + Input text id=itemsDescription ${items_description} | |
110 | + Input text id=itemsQuantity ${quantity} | |
111 | + Input text name=delStartDate ${deliveryDate} | |
112 | + Sleep 2 | |
113 | + Input text xpath=//input[@ng-model='data.items[0].deliveryDate.endDate'] ${deliveryDate} | |
114 | + Input text name=latitude ${latitude} | |
115 | + Input text name=longitude ${longitude} | |
116 | + Click Element xpath=//select[@name='region']//option[@label='Київська'] | |
117 | + Sleep 2 | |
118 | + Click Element xpath=//select[@name='city']//option[@label='Київ'] | |
119 | + Input text name=addressStr ${streetAddress} | |
120 | + Input text name=postIndex ${postalCode} | |
121 | + Wait Until Page Contains Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram'] | |
122 | + Click Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram'] | |
123 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='enqPEndDate'] ${enquiry_end_date} | |
124 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//div[contains(@class, 'col-sm-2')]//input[@ng-model='data.enquiryPeriod.endDate'] ${enquiry_end_time} | |
125 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='startDate'] ${start_date} | |
126 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//div[contains(@class, 'col-sm-2')]//input[@ng-model='data.tenderPeriod.startDate'] ${start_time} | |
127 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='endDate'] ${end_date} | |
128 | + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//div[contains(@class, 'col-sm-2')]//input[@ng-model='data.tenderPeriod.endDate'] ${end_time} | |
129 | + Sleep 2 | |
130 | + Click Element xpath=//div[contains(@class, 'col-sm-2')]//input[@data-target='#classification'] | |
131 | + Sleep 1 | |
132 | + Input text xpath=//div[contains(@class, 'modal-content')]//input[@ng-model='searchstring'] ${cpv} | |
133 | + Sleep 2 | |
134 | + Wait Until Page Contains ${cpv} | |
135 | + Click Element xpath=//td[contains(., '${cpv}')] | |
136 | + Sleep 1 | |
137 | + Click Element xpath=//div[contains(@class, 'modal-content')]//button[@ng-click='choose()'] | |
138 | + Sleep 1 | |
139 | + Додати предмет ${items[0]} 0 | |
140 | + Run Keyword if '${mode}' == 'multi' Додати багато предметів items | |
141 | + Sleep 1 | |
142 | + Wait Until Page Contains Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | |
143 | + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | |
144 | + Sleep 1 | |
145 | + Wait Until Page Contains [ТЕСТУВАННЯ] 10 | |
146 | + Sleep 20 | |
147 | + Click Element xpath=//*[text()='${title}'] | |
148 | + Sleep 5 | |
149 | + ${tender_UAid}= Get Text xpath=//div[contains(@class, "panel-heading")] | |
150 | + ${tender_UAid}= Get Substring ${tender_UAid} 10 | |
151 | + ${Ids}= Convert To String ${tender_UAid} | |
152 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${ARGUMENTS[0]} ${tender_UAid} | |
153 | + [return] ${Ids} | |
154 | + | |
155 | +Set Multi Ids | |
156 | + [Arguments] @{ARGUMENTS} | |
157 | + [Documentation] | |
158 | + ... ${ARGUMENTS[0]} == ${tender_UAid} | |
159 | + ${current_location}= Get Location | |
160 | + ${id}= Get Substring ${current_location} 10 | |
161 | + ${Ids}= Create List ${tender_UAid} ${id} | |
162 | + | |
163 | +Додати предмет | |
164 | + [Arguments] @{ARGUMENTS} | |
165 | + [Documentation] | |
166 | + ... ${ARGUMENTS[0]} == items | |
167 | + ... ${ARGUMENTS[1]} == ${INDEX} | |
168 | + ${dkpp_desc}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description | |
169 | + ${dkpp_id}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id | |
170 | + Sleep 2 | |
171 | + Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[${ARGUMENTS[1]}+1] | |
172 | + Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')] | |
173 | + Sleep 2 | |
174 | + Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc} | |
175 | + Wait Until Page Contains ${dkpp_id} | |
176 | + Sleep 1 | |
177 | + Click Element xpath=//td[contains(., '${dkpp_id}')] | |
178 | + Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()'] | |
179 | + Sleep 2 | |
180 | + | |
181 | +Додати багато предметів | |
182 | + [Arguments] @{ARGUMENTS} | |
183 | + [Documentation] | |
184 | + ... ${ARGUMENTS[0]} == items | |
185 | + ${Items_length}= Get Length ${items} | |
186 | + : FOR ${INDEX} IN RANGE 1 ${Items_length} | |
187 | + \ Click Element xpath=.//*[@id='myform']/tender-form/div/button | |
188 | + \ Додати предмет ${items[${INDEX}]} ${INDEX} | |
26 | 189 | |
27 | 190 | Пошук тендера по ідентифікатору |
28 | 191 | [Arguments] @{ARGUMENTS} |
29 | 192 | [Documentation] |
30 | 193 | ... ${ARGUMENTS[0]} == username |
31 | - ... ${ARGUMENTS[1]} == tenderId | |
32 | - ... ${ARGUMENTS[2]} == id | |
194 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
33 | 195 | Switch browser ${ARGUMENTS[0]} |
34 | - ${current_location}= Get Location | |
35 | - Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | |
36 | 196 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} |
37 | - Wait Until Page Contains E-TENDER - центр електронної торгівлі 10 | |
197 | + Wait Until Page Contains Список закупівель 10 | |
38 | 198 | sleep 1 |
39 | 199 | Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]} |
40 | 200 | Click Link jquery=a[ng-click='search()'] |
41 | 201 | sleep 2 |
42 | -# ${last_note_id}= Add pointy note jquery=a[href^="#/tenderDetailes"] Found tender with tenderID "${ARGUMENTS[1]}" width=200 position=bottom | |
43 | -# sleep 1 | |
44 | -# Remove element ${last_note_id} | |
45 | 202 | Click Link jquery=a[href^="#/tenderDetailes"] |
46 | 203 | Wait Until Page Contains ${ARGUMENTS[1]} 10 |
47 | 204 | sleep 1 |
48 | 205 | Capture Page Screenshot |
49 | 206 | |
50 | -Оновити сторінку з тендером | |
207 | +Завантажити документ | |
51 | 208 | [Arguments] @{ARGUMENTS} |
52 | 209 | [Documentation] |
53 | 210 | ... ${ARGUMENTS[0]} == username |
54 | - ... ${ARGUMENTS[1]} == tenderId | |
55 | - ... ${ARGUMENTS[2]} == id | |
56 | - ${current_location}= Get Location | |
57 | - Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | |
58 | - Run keyword unless '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Пошук тендера по ідентифікатору @{ARGUMENTS} | |
59 | - Wait Until Page Contains ${ARGUMENTS[1]} 10 | |
60 | - sleep 1 | |
211 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
212 | + ... ${ARGUMENTS[2]} == ${Complain} | |
213 | + Fail Тест не написаний | |
214 | + | |
215 | +Подати скаргу | |
216 | + [Arguments] @{ARGUMENTS} | |
217 | + [Documentation] | |
218 | + ... ${ARGUMENTS[0]} == username | |
219 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
220 | + ... ${ARGUMENTS[2]} == ${Complain} | |
221 | + Fail Не реалізований функціонал | |
222 | + | |
223 | +порівняти скаргу | |
224 | + [Arguments] @{ARGUMENTS} | |
225 | + [Documentation] | |
226 | + ... ${ARGUMENTS[0]} == username | |
227 | + ... ${ARGUMENTS[1]} == ${file_path} | |
228 | + ... ${ARGUMENTS[2]} == ${TENDER_UAID} | |
229 | + Fail Не реалізований функціонал | |
230 | + | |
231 | +Подати цінову пропозицію | |
232 | + [Arguments] @{ARGUMENTS} | |
233 | + [Documentation] | |
234 | + ... ${ARGUMENTS[0]} == username | |
235 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
236 | + ... ${ARGUMENTS[2]} == ${test_bid_data} | |
237 | + ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount | |
238 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
239 | + Wait Until Page Contains Інформація про процедуру закупівлі 10 | |
240 | + Wait Until Page Contains Element id=amount 10 | |
241 | + Input text id=amount ${bid} | |
242 | + Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції'] | |
243 | + DEBUG | |
244 | + Click Element xpath=//div[@class='row']/button[@class='btn btn-success'] | |
245 | + | |
246 | +скасувати цінову пропозицію | |
247 | + [Arguments] @{ARGUMENTS} | |
248 | + [Documentation] | |
249 | + ... ${ARGUMENTS[0]} == username | |
250 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
251 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
252 | + Click Element xpath=//button[@class='btn-sm btn-danger ng-isolate-scope'] | |
253 | + | |
254 | +Оновити сторінку з тендером | |
255 | + [Arguments] @{ARGUMENTS} | |
256 | + [Documentation] | |
257 | + ... ${ARGUMENTS[0]} = username | |
258 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
259 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
260 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
261 | + Reload Page | |
262 | + | |
263 | +Задати питання | |
264 | + [Arguments] @{ARGUMENTS} | |
265 | + [Documentation] | |
266 | + ... ${ARGUMENTS[0]} = username | |
267 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
268 | + ... ${ARGUMENTS[2]} = question_data | |
269 | + | |
270 | + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | |
271 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
272 | + | |
273 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
274 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
275 | + Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 10 | |
276 | + Click Element jquery=a[href^="#/addQuestion/"] | |
277 | + Wait Until Page Contains Element id=title | |
278 | + Input text id=title ${title} | |
279 | + Input text id=description ${description} | |
280 | + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit'] | |
281 | + | |
282 | +Відповісти на питання | |
283 | + [Arguments] @{ARGUMENTS} | |
284 | + [Documentation] | |
285 | + ... ${ARGUMENTS[0]} = username | |
286 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
287 | + ... ${ARGUMENTS[2]} = 0 | |
288 | + ... ${ARGUMENTS[3]} = answer_data | |
289 | + | |
290 | + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer | |
291 | + | |
292 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
293 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
294 | + Wait Until Page Contains Element xpath=//pre[@class='ng-binding'][text()='Додати відповідь'] 10 | |
295 | + Click Element xpath=//pre[@class='ng-binding'][text()='Додати відповідь'] | |
296 | + Input text xpath=//div[@class='editable-controls form-group']//textarea ${answer} | |
297 | + Click Element xpath=//span[@class='editable-buttons']/button[@type='submit'] | |
298 | + | |
299 | +Внести зміни в тендер | |
300 | + [Arguments] @{ARGUMENTS} | |
301 | + [Documentation] | |
302 | + ... ${ARGUMENTS[0]} = username | |
303 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
304 | + ${ADDITIONAL_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} single | |
305 | + ${tender_data}= Add_data_for_GUI_FrontEnds ${ADDITIONAL_DATA} | |
306 | + ${items}= Get From Dictionary ${tender_data.data} items | |
307 | + ${description}= Get From Dictionary ${tender_data.data} description | |
308 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
309 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
310 | + Wait Until Page Contains Element xpath=//a[@class='btn btn-primary ng-scope'] 10 | |
311 | + Click Element xpath=//a[@class='btn btn-primary ng-scope'] | |
312 | + Sleep 2 | |
313 | + Input text id=description ${description} | |
314 | + Click Element xpath=//button[@class='btn btn-info ng-isolate-scope'] | |
315 | + Capture Page Screenshot | |
316 | + | |
317 | +додати предмети закупівлі | |
318 | + [Arguments] @{ARGUMENTS} | |
319 | + [Documentation] | |
320 | + ... ${ARGUMENTS[0]} = username | |
321 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
322 | + ... ${ARGUMENTS[2]} = 3 | |
323 | + ${ADDITIONAL_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} multi | |
324 | + ${tender_data}= Add_data_for_GUI_FrontEnds ${ADDITIONAL_DATA} | |
325 | + ${items}= Get From Dictionary ${tender_data.data} items | |
326 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
327 | + Run keyword if '${TEST NAME}' == 'Можливість додати позицію закупівлі в тендер' додати позицію | |
328 | + Run keyword if '${TEST NAME}' != 'Можливість додати позицію закупівлі в тендер' видалити позиції | |
329 | + | |
330 | +додати позицію | |
331 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
332 | + Sleep 2 | |
333 | + Click Element xpath=//a[@class='btn btn-primary ng-scope'] | |
334 | + Sleep 2 | |
335 | + : FOR ${INDEX} IN RANGE 1 ${ARGUMENTS[2]} +1 | |
336 | + \ Click Element xpath=.//*[@id='myform']/tender-form/div/button | |
337 | + \ Додати предмет ${items[${INDEX}]} ${INDEX} | |
338 | + Sleep 2 | |
339 | + Click Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни'] | |
340 | + Wait Until Page Contains [ТЕСТУВАННЯ] 10 | |
341 | + | |
342 | +видалити позиції | |
343 | + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
344 | + Click Element xpath=//a[@class='btn btn-primary ng-scope'] | |
345 | + Sleep 2 | |
346 | + : FOR ${INDEX} IN RANGE 1 ${ARGUMENTS[2]} +1 | |
347 | + \ Click Element xpath=(//button[@class='btn btn-danger ng-scope'])[last()] | |
348 | + \ Sleep 1 | |
349 | + Sleep 2 | |
350 | + Wait Until Page Contains Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни'] 10 | |
351 | + Click Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни'] | |
352 | + Wait Until Page Contains [ТЕСТУВАННЯ] 10 | |
61 | 353 | |
62 | 354 | Отримати інформацію із тендера |
63 | 355 | [Arguments] @{ARGUMENTS} |
... | ... | @@ -68,13 +360,6 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
68 | 360 | ${return_value}= run keyword Отримати інформацію про ${ARGUMENTS[1]} |
69 | 361 | [return] ${return_value} |
70 | 362 | |
71 | -Відмітити на сторінці поле з тендера | |
72 | - [Arguments] ${fieldname} ${locator} | |
73 | - ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom | |
74 | - Align elements horizontally ${locator} ${last_note_id} | |
75 | - sleep 1 | |
76 | - Remove element ${last_note_id} | |
77 | - | |
78 | 363 | Отримати тест із поля і показати на сторінці |
79 | 364 | [Arguments] ${fieldname} |
80 | 365 | sleep 3 |
... | ... | @@ -82,16 +367,12 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
82 | 367 | ${return_value}= Get Text ${locator.${fieldname}} |
83 | 368 | [return] ${return_value} |
84 | 369 | |
85 | -Отримати інформацію про tenderId | |
86 | - ${return_value}= Отримати тест із поля і показати на сторінці tenderId | |
87 | - [return] ${return_value.split(' ')[1]} | |
88 | - | |
89 | 370 | Отримати інформацію про title |
90 | 371 | ${return_value}= Отримати тест із поля і показати на сторінці title |
91 | 372 | [return] ${return_value} |
92 | 373 | |
93 | 374 | Отримати інформацію про description |
94 | - ${return_value}= Отримати тест із поля і показати на сторінці description | |
375 | + ${return_value}= Отримати тест із поля і показати на сторінці description | |
95 | 376 | [return] ${return_value} |
96 | 377 | |
97 | 378 | Отримати інформацію про minimalStep.amount |
... | ... | @@ -99,85 +380,162 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai |
99 | 380 | ${return_value}= Convert To Number ${return_value.split(' ')[0]} |
100 | 381 | [return] ${return_value} |
101 | 382 | |
102 | -Отримати інформацію про procuringEntity.name | |
103 | - ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name | |
104 | - [return] ${return_value} | |
105 | - | |
106 | - | |
107 | 383 | Отримати інформацію про value.amount |
108 | 384 | ${return_value}= Отримати тест із поля і показати на сторінці value.amount |
109 | 385 | ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3]) |
110 | 386 | ${return_value}= Convert To Number ${return_value} |
111 | 387 | [return] ${return_value} |
112 | 388 | |
389 | +Відмітити на сторінці поле з тендера | |
390 | + [Arguments] ${fieldname} ${locator} | |
391 | + ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom | |
392 | + Align elements horizontally ${locator} ${last_note_id} | |
393 | + sleep 1 | |
394 | + Remove element ${last_note_id} | |
395 | + | |
396 | +Отримати інформацію про tenderId | |
397 | + ${return_value}= Отримати тест із поля і показати на сторінці tenderId | |
398 | + ${return_value}= Get Substring ${return_value} 10 | |
399 | + [return] ${return_value} | |
400 | + | |
401 | +Отримати інформацію про procuringEntity.name | |
402 | + ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name | |
403 | + [return] ${return_value} | |
404 | + | |
113 | 405 | Отримати інформацію про tenderPeriod.startDate |
114 | 406 | ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate |
407 | + ${return_value}= Change_date_to_month ${return_value} | |
115 | 408 | [return] ${return_value} |
116 | 409 | |
117 | 410 | Отримати інформацію про tenderPeriod.endDate |
118 | 411 | ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.endDate |
412 | + ${return_value}= Change_date_to_month ${return_value} | |
119 | 413 | [return] ${return_value} |
120 | 414 | |
121 | 415 | Отримати інформацію про enquiryPeriod.startDate |
122 | 416 | ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate |
417 | + ${return_value}= Change_date_to_month ${return_value} | |
123 | 418 | [return] ${return_value} |
124 | 419 | |
125 | 420 | Отримати інформацію про enquiryPeriod.endDate |
126 | 421 | ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate |
422 | + ${return_value}= Change_date_to_month ${return_value} | |
423 | + [return] ${return_value} | |
424 | + | |
425 | +Change_date_to_month | |
426 | + [Arguments] @{ARGUMENTS} | |
427 | + [Documentation] | |
428 | + ... ${ARGUMENTS[0]} == date | |
429 | + ${day}= Get Substring ${ARGUMENTS[0]} 0 2 | |
430 | + ${month}= Get Substring ${ARGUMENTS[0]} 3 6 | |
431 | + ${year}= Get Substring ${ARGUMENTS[0]} 5 | |
432 | + ${return_value}= Convert To String ${month}${day}${year} | |
433 | + [return] ${return_value} | |
434 | + | |
435 | +Отримати інформацію про items[0].description | |
436 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].description | |
127 | 437 | [return] ${return_value} |
128 | 438 | |
439 | +Отримати інформацію про items[0].deliveryLocation.latitude | |
440 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryLocation.latitude | |
441 | + ${return_value}= Get Substring ${return_value} 0 10 | |
442 | + [return] ${return_value} | |
129 | 443 | |
130 | -Отримати інформацію про items[${item_id}].description | |
131 | - відмітити на сторінці поле з тендера items[${item_id}].description jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)> | |
132 | - ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)> | |
444 | +Отримати інформацію про items[0].deliveryLocation.longitude | |
445 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryLocation.longitude | |
446 | + ${return_value}= Get Substring ${return_value} 12 22 | |
133 | 447 | [return] ${return_value} |
134 | 448 | |
135 | -Отримати інформацію про items[${item_id}].quantity | |
136 | - відмітити на сторінці поле з тендера items[${item_id}].quantity jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Кількість:")>:eq(1)> | |
137 | - ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Кількість:")>:eq(1)> | |
138 | - ${return_value}= Convert To Number ${return_value} | |
449 | +Отримати інформацію про items[0].unit.code | |
450 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].unit.code | |
451 | + ${return_value}= Get Substring ${return_value} 5 | |
452 | + ${return_value}= Run keyword if '${return_value}' == 'кг.' Convert To String KGM | |
453 | + [return] ${return_value} | |
454 | + | |
455 | +Отримати інформацію про items[0].quantity | |
456 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].quantity | |
457 | + ${return_value}= Get Substring ${return_value} 0 4 | |
458 | + ${return_value}= Convert To Number ${return_value} | |
139 | 459 | [return] ${return_value} |
140 | 460 | |
141 | -Отримати інформацію про items[${item_id}].classification.id | |
142 | - відмітити на сторінці поле з тендера items[0].classification.id jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
143 | - ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
461 | +Отримати інформацію про items[0].classification.id | |
462 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].classification.id | |
144 | 463 | [return] ${return_value.split(' ')[0]} |
145 | 464 | |
146 | -Отримати інформацію про items[${item_id}].classification.scheme | |
147 | - відмітити на сторінці поле з тендера items[0].classification.id jquery=tender-subject-info>div.row:contains("CPV")>:eq(1)> | |
148 | - ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("CPV")>:eq(1)> | |
465 | +Отримати інформацію про items[0].classification.scheme | |
466 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].classification.scheme | |
467 | + ${return_value}= Get Substring ${return_value} 0 -1 | |
468 | + [return] ${return_value.split(' ')[1]} | |
469 | + | |
470 | +Отримати інформацію про items[0].classification.description | |
471 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].classification.description | |
472 | + ${return_value}= Get Substring ${return_value} 11 | |
473 | + ${return_value}= Run keyword if '${return_value}' == 'Картонки' Convert To String Cartons | |
474 | + [return] ${return_value} | |
475 | + | |
476 | +Отримати інформацію про items[0].additionalClassifications[0].id | |
477 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].id | |
149 | 478 | [return] ${return_value.split(' ')[0]} |
150 | 479 | |
151 | -Отримати інформацію про items[${item_id}].classification.description | |
152 | - відмітити на сторінці поле з тендера classification.description jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
153 | - ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)> | |
154 | - ${return_value}= catenate @{return_value.split(' ')[1:]} | |
480 | +Отримати інформацію про items[0].additionalClassifications[0].scheme | |
481 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].scheme | |
482 | + ${return_value}= Get Substring ${return_value} 0 -1 | |
483 | + [return] ${return_value.split(' ')[1]} | |
484 | + | |
485 | +Отримати інформацію про items[0].additionalClassifications[0].description | |
486 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].description | |
487 | + ${return_value}= Get Substring ${return_value} 8 60 | |
488 | + ${return_value}= Remove String ${return_value} " | |
489 | + ${return_value}= Convert To Lowercase ${return_value} | |
490 | + [return] ${return_value} | |
491 | + | |
492 | +Отримати інформацію про items[0].deliveryAddress.postalCode | |
493 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryAddress.postalCode | |
494 | + ${return_value}= Get Substring ${return_value} 0 5 | |
495 | + [return] ${return_value} | |
496 | + | |
497 | +Отримати інформацію про items[0].deliveryAddress.countryName | |
498 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryAddress.countryName | |
499 | + ${return_value}= Get Substring ${return_value} 0 7 | |
500 | + [return] ${return_value} | |
501 | + | |
502 | +Отримати інформацію про items[0].deliveryAddress.region | |
503 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryAddress.region | |
504 | + ${return_value}= Run keyword if '${return_value}' == 'Київська,' Convert To String м. Київ | |
505 | + [return] ${return_value} | |
506 | + | |
507 | +Отримати інформацію про items[0].deliveryAddress.locality | |
508 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryAddress.locality | |
509 | + ${return_value}= Run keyword if '${return_value}' == 'Київ,' Convert To String м. Київ | |
155 | 510 | [return] ${return_value} |
156 | 511 | |
157 | -Отримати інформацію про items[${item_id}].deliveryAddress | |
158 | - ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryAddress | |
512 | +Отримати інформацію про items[0].deliveryAddress.streetAddress | |
513 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryAddress.streetAddress | |
159 | 514 | [return] ${return_value} |
160 | 515 | |
161 | -Отримати інформацію про items[${item_id}].deliveryDate | |
162 | - ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryDate | |
516 | +Отримати інформацію про items[0].deliveryDate.endDate | |
517 | + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryDate.endDate | |
518 | + ${time}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate | |
519 | + ${time}= Get Substring ${time} 11 | |
520 | + ${day}= Get Substring ${return_value} 16 18 | |
521 | + ${month}= Get Substring ${return_value} 18 22 | |
522 | + ${year}= Get Substring ${return_value} 22 | |
523 | + ${return_value}= Convert To String ${year}${month}${day}${time} | |
163 | 524 | [return] ${return_value} |
164 | 525 | |
165 | -Отримати інформацію про questions[${question_id}].title | |
166 | - відмітити на сторінці поле з тендера questions title jquery=tender-questions>div:eq(1)>div.row:contains("Тема:")>:eq(1)> | |
167 | - ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Тема:")>:eq(1)> | |
526 | +Отримати інформацію про questions[0].title | |
527 | + ${return_value}= отримати тест із поля і показати на сторінці questions[0].title | |
168 | 528 | [return] ${return_value} |
169 | 529 | |
170 | -Отримати інформацію про questions[${question_id}].description | |
171 | - відмітити на сторінці поле з тендера questions description jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)> | |
172 | - ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)> | |
530 | +Отримати інформацію про questions[0].description | |
531 | + ${return_value}= отримати тест із поля і показати на сторінці questions[0].description | |
173 | 532 | [return] ${return_value} |
174 | 533 | |
175 | -Отримати інформацію про questions[${question_id}].date | |
176 | - відмітити на сторінці поле з тендера question date jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)> | |
177 | - ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)> | |
534 | +Отримати інформацію про questions[0].date | |
535 | + ${return_value}= отримати тест із поля і показати на сторінці questions[0].date | |
536 | + ${return_value}= Change_date_to_month ${return_value} | |
178 | 537 | [return] ${return_value} |
179 | 538 | |
180 | -Отримати інформацію про questions[${question_id}].answer | |
181 | - відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last> | |
182 | - ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last> | |
539 | +Отримати інформацію про questions[0].answer | |
540 | + ${return_value}= отримати тест із поля і показати на сторінці questions[0].answer | |
183 | 541 | [return] ${return_value} | ... | ... |
... | ... | @@ -4,46 +4,500 @@ Library String |
4 | 4 | Library DateTime |
5 | 5 | |
6 | 6 | *** Variables *** |
7 | -${locator.tenderId} jquery=h3 | |
8 | -${locator.title} jquery=tender-subject-info>div.row:contains("Назва закупівлі:")>:eq(1)> | |
9 | -${locator.description} jquery=tender-subject-info>div.row:contains("Детальний опис закупівлі:")>:eq(1)> | |
10 | -${locator.minimalStep.amount} jquery=tender-subject-info>div.row:contains("Мінімальний крок аукціону, грн.:")>:eq(1)> | |
11 | -${locator.procuringEntity.name} jquery=customer-info>div.row:contains("Найменування:")>:eq(1)> | |
12 | -${locator.value.amount} jquery=tender-subject-info>div.row:contains("Повний доступний бюджет закупівлі, грн.:")>:eq(1)> | |
13 | -${locator.tenderPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок прийому пропозицій:")>:eq(1)> | |
14 | -${locator.tenderPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення прийому пропозицій:")>:eq(1)> | |
15 | -${locator.enquiryPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок періоду уточнень:")>:eq(1)> | |
16 | -${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення періоду уточнень:")>:eq(1)> | |
17 | - | |
7 | +${locator.tenderId} xpath=//td[./text()='TenderID']/following-sibling::td[1] | |
8 | +${locator.title} xpath=//td[./text()='Загальна назва закупівлі']/following-sibling::td[1] | |
9 | +${locator.description} xpath=//td[./text()='Предмет закупівлі']/following-sibling::td[1] | |
10 | +${locator.value.amount} xpath=//td[./text()='Максимальний бюджет']/following-sibling::td[1] | |
11 | +${locator.minimalStep.amount} xpath=//td[./text()='Мінімальний крок зменшення ціни']/following-sibling::td[1] | |
12 | +${locator.enquiryPeriod.endDate} xpath=//td[./text()='Завершення періоду обговорення']/following-sibling::td[1] | |
13 | +${locator.tenderPeriod.endDate} xpath=//td[./text()='Завершення періоду прийому пропозицій']/following-sibling::td[1] | |
14 | +${locator.items[0].deliveryAddress.countryName} xpath=//td[@class='nameField'][./text()='Адреса поставки']/following-sibling::td[1] | |
15 | +${locator.items[0].deliveryDate.endDate} xpath=//td[./text()='Кінцева дата поставки']/following-sibling::td[1] | |
16 | +${locator.items[0].classification.scheme} xpath=//td[@class = 'nameField'][./text()='Клас CPV'] | |
17 | +${locator.items[0].classification.id} xpath=//td[./text()='Клас CPV']/following-sibling::td[1]/span[1] | |
18 | +${locator.items[0].classification.description} xpath=//td[./text()='Клас CPV']/following-sibling::td[1]/span[2] | |
19 | +${locator.items[0].additionalClassifications[0].scheme} xpath=//td[@class = 'nameField'][./text()='Клас ДКПП'] | |
20 | +${locator.items[0].additionalClassifications[0].id} xpath=//td[./text()='Клас ДКПП']/following-sibling::td[1]/span[1] | |
21 | +${locator.items[0].additionalClassifications[0].description} xpath=//td[./text()='Клас ДКПП']/following-sibling::td[1]/span[2] | |
22 | +${locator.items[0].quantity} xpath=//td[./text()='Кількість']/following-sibling::td[1]/span[1] | |
23 | +${locator.items[0].unit.code} xpath=//td[./text()='Кількість']/following-sibling::td[1]/span[2] | |
24 | +${locator.questions[0].title} xpath=//div[@class = 'question relative']//div[@class = 'title'] | |
25 | +${locator.questions[0].description} xpath = //div[@class='text'] | |
26 | +${locator.questions[0].date} xpath = //div[@class='date'] | |
27 | +${locator.questions[0].answer} xpath=//div[@class = 'answer relative']//div[@class = 'text'] | |
18 | 28 | |
19 | 29 | *** Keywords *** |
20 | 30 | Підготувати клієнт для користувача |
21 | - [Arguments] ${username} | |
22 | - [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | |
23 | - Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${username} | |
24 | - Set Window Position @{USERS.users['${username}'].position} | |
25 | - Set Window Size @{USERS.users['${username}'].size} | |
26 | - Log Variables | |
31 | + [Arguments] @{ARGUMENTS} | |
32 | + [Documentation] Відкрити брaузер, створити обєкт api wrapper, тощо | |
33 | + ... ${ARGUMENTS[0]} == username | |
34 | + Open Browser ${BROKERS['${USERS.users['${ARGUMENTS[0]}'].broker}'].url} ${USERS.users['${ARGUMENTS[0]}'].browser} alias=${ARGUMENTS[0]} | |
35 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | |
36 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | |
37 | + Run Keyword And Ignore Error Pre Login ${ARGUMENTS[0]} | |
38 | + Wait Until Page Contains Element jquery=a[href="/cabinet"] | |
39 | + Click Element jquery=a[href="/cabinet"] | |
40 | + Run Keyword If '${username}' != 'Netcast_Viewer' Login | |
41 | + | |
42 | +Login | |
43 | + [Arguments] @{ARGUMENTS} | |
44 | + Wait Until Page Contains Element name=email 10 | |
45 | + Sleep 1 | |
46 | + Input text name=email ${USERS.users['${username}'].login} | |
47 | + Sleep 2 | |
48 | + Input text name=psw ${USERS.users['${username}'].password} | |
49 | + Wait Until Page Contains Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] 20 | |
50 | + Click Element xpath=//button[contains(@class, 'btn')][./text()='Вхід в кабінет'] | |
51 | + | |
52 | +Pre Login | |
53 | + [Arguments] @{ARGUMENTS} | |
54 | + [Documentation] | |
55 | + ... ${ARGUMENTS[0]} == username | |
56 | + Wait Until Page Contains Element name=siteLogin 10 | |
57 | + Input text name=siteLogin ${BROKERS['${USERS.users['${username}'].broker}'].login} | |
58 | + Input text name=sitePass ${BROKERS['${USERS.users['${username}'].broker}'].password} | |
59 | + Click Button xpath=.//*[@id='table1']/tbody/tr/td/form/p[3]/input | |
60 | + | |
61 | +Створити тендер | |
62 | + [Arguments] @{ARGUMENTS} | |
63 | + [Documentation] | |
64 | + ... ${ARGUMENTS[0]} == username | |
65 | + ... ${ARGUMENTS[1]} == tender_data | |
66 | + #{tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]} | |
67 | + ${items}= Get From Dictionary ${ARGUMENTS[1].data} items | |
68 | + ${title}= Get From Dictionary ${ARGUMENTS[1].data} title | |
69 | + ${description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
70 | + ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount | |
71 | + ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount | |
72 | + | |
73 | + ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description | |
74 | + ${quantity}= Get From Dictionary ${items[0]} quantity | |
75 | + ${countryName}= Get From Dictionary ${ARGUMENTS[1].data.procuringEntity.address} countryName | |
76 | + ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate | |
77 | + ${delivery_end_date}= convert_date_to_slash_format ${delivery_end_date} | |
78 | + ${cpv}= Convert To String Картонки | |
79 | + ${cpv_id}= Get From Dictionary ${items[0].classification} id | |
80 | + ${cpv_id1}= Replace String ${cpv_id} - _ | |
81 | + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description | |
82 | + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id | |
83 | + ${dkpp_id1}= Replace String ${dkpp_id} - _ | |
84 | + | |
85 | + ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate | |
86 | + ${enquiry_end_date}= convert_date_to_slash_format ${enquiry_end_date} | |
87 | + ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate | |
88 | + ${end_date}= convert_date_to_slash_format ${end_date} | |
89 | + | |
90 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
91 | + Wait Until Page Contains Element jquery=a[href="/tenders/new"] 30 | |
92 | + Click Element jquery=a[href="/tenders/new"] | |
93 | + Wait Until Page Contains Element name=tender_title 30 | |
94 | + Input text name=tender_title ${title} | |
95 | + Input text name=tender_description ${description} | |
96 | + Input text name=tender_value_amount ${budget} | |
97 | + Input text name=tender_minimalStep_amount ${step_rate} | |
98 | + | |
99 | +# Додати специфікацю початок | |
100 | + Input text name=items[0][item_description] ${items_description} | |
101 | + Input text name=items[0][item_quantity] ${quantity} | |
102 | + Input text name=items[0][item_deliveryAddress_countryName] ${countryName} | |
103 | + Input text name=items[0][item_deliveryDate_endDate] ${delivery_end_date} | |
104 | + Click Element xpath=//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'] | |
105 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')] | |
106 | + Input text id=search ${cpv} | |
107 | + Wait Until Page Contains ${cpv_id} | |
108 | + Click Element xpath=//a[contains(@id,'${cpv_id1}')] | |
109 | + Click Element xpath=.//*[@id='select'] | |
110 | + Unselect Frame | |
111 | + Click Element xpath=//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником'] | |
112 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')] | |
113 | + Input text id=search ${dkpp_desc} | |
114 | + Wait Until Page Contains ${dkpp_id} | |
115 | + Click Element xpath=//a[contains(@id,'${dkpp_id1}')] | |
116 | + Click Element xpath=.//*[@id='select'] | |
117 | +# Додати специфікацю кінець | |
118 | + | |
119 | + Unselect Frame | |
120 | + Input text name=plan_date ${enquiry_end_date} | |
121 | + Input text name=tender_enquiryPeriod_endDate ${enquiry_end_date} | |
122 | + Input text name=tender_tenderPeriod_endDate ${end_date} | |
123 | + | |
124 | + Додати предмет ${items[0]} 0 | |
125 | + Run Keyword if '${mode}' == 'multi' Додати багато предметів items | |
126 | + Unselect Frame | |
127 | + | |
128 | + Click Element xpath= //button[@value='publicate'] | |
129 | + Wait Until Page Contains Тендер опубліковано 30 | |
130 | + | |
131 | + ${tender_UAid}= Get Text xpath=//*/section[6]/table/tbody/tr[2]/td[2] | |
132 | + ${Ids}= Convert To String ${tender_UAid} | |
133 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | |
134 | + [return] ${Ids} | |
135 | + | |
136 | +Set Multi Ids | |
137 | + [Arguments] @{ARGUMENTS} | |
138 | + [Documentation] | |
139 | + ... ${ARGUMENTS[1]} == ${tender_UAid} | |
140 | + ${id}= Get Text xpath=//*/section[6]/table/tbody/tr[1]/td[2] | |
141 | + ${Ids}= Create List ${tender_UAid} ${id} | |
142 | + | |
143 | +Додати предмет | |
144 | + [Arguments] @{ARGUMENTS} | |
145 | + [Documentation] | |
146 | + ... ${ARGUMENTS[0]} == items | |
147 | + ... ${ARGUMENTS[1]} == ${INDEX} | |
148 | + ${dkpp_desc1}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description | |
149 | + ${dkpp_id11}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id | |
150 | + ${dkpp_1id}= Replace String ${dkpp_id11} - _ | |
151 | + | |
152 | + Wait Until Page Contains Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі'] | |
153 | + Click Element xpath=//a[contains(@class, 'addMultiItem')][./text()='Додати предмет закупівлі'] | |
154 | + ${index} = Convert To Integer ${ARGUMENTS[1]} | |
155 | + ${index} = Convert To Integer ${index + 1} | |
156 | + Wait Until Page Contains Element name=items[${index}][item_description] 30 | |
157 | + Input text name=items[${index}][item_description] ${description} | |
158 | + Input text name=items[${index}][item_quantity] ${quantity} | |
159 | + | |
160 | + Click Element xpath=(//a[contains(@data-class, 'cpv')][./text()='Визначити за довідником'])[${index} + 1] | |
161 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/cpv/uk.htm?relation=true')] | |
162 | + Input text id=search ${cpv} | |
163 | + Wait Until Page Contains ${cpv_id} | |
164 | + Click Element xpath=//a[contains(@id,'${cpv_id1}')] | |
165 | + Click Element xpath=.//*[@id='select'] | |
166 | + Unselect Frame | |
167 | + Click Element xpath=(//a[contains(@data-class, 'dkpp')][./text()='Визначити за довідником'])[${index} + 1] | |
168 | + Select Frame xpath=//iframe[contains(@src,'/js/classifications/dkpp/uk.htm?relation=true')] | |
169 | + Input text id=search ${dkpp_desc1} | |
170 | + Wait Until Page Contains ${dkpp_id11} | |
171 | + Click Element xpath=//a[contains(@id,'${dkpp_1id}')] | |
172 | + Click Element xpath=.//*[@id='select'] | |
173 | + Unselect Frame | |
174 | + Capture Page Screenshot | |
175 | + | |
176 | +Додати багато предметів | |
177 | + [Arguments] @{ARGUMENTS} | |
178 | + [Documentation] | |
179 | + ... ${ARGUMENTS[0]} == items | |
180 | + ${Items_length}= Get Length ${items} | |
181 | + : FOR ${INDEX} IN RANGE 1 ${Items_length} | |
182 | + \ Додати предмет ${items[${INDEX}]} ${INDEX} | |
183 | + | |
184 | +додати предмети закупівлі | |
185 | + [Arguments] @{ARGUMENTS} | |
186 | + [Documentation] | |
187 | + ... ${ARGUMENTS[0]} = username | |
188 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
189 | + ... ${ARGUMENTS[2]} = 3 | |
190 | + ${tender_data}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} multi | |
191 | + | |
192 | + ${items}= Get From Dictionary ${tender_data.data} items | |
193 | + ${description}= Get From Dictionary ${tender_data.data} description | |
194 | + ${quantity}= Get From Dictionary ${items[0]} quantity | |
195 | + ${cpv}= Convert To String Картонки | |
196 | + ${cpv_id}= Get From Dictionary ${items[0].classification} id | |
197 | + ${cpv_id1}= Replace String ${cpv_id} - _ | |
198 | + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description | |
199 | + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id | |
200 | + ${dkpp_id1}= Replace String ${dkpp_id} - _ | |
201 | + | |
202 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
203 | + Run keyword if '${TEST NAME}' == 'Можливість додати позицію закупівлі в тендер' додати позицію | |
204 | + Run keyword if '${TEST NAME}' != 'Можливість додати позицію закупівлі в тендер' видалити позиції | |
205 | + | |
206 | +додати позицію | |
207 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
208 | + Wait Until Page Contains Element xpath=//a[./text()='Редагувати'] 30 | |
209 | + Click Element xpath=//a[./text()='Редагувати'] | |
210 | + Додати багато предметів ${ARGUMENTS[2]} | |
211 | + Wait Until Page Contains Element xpath=//button[./text()='Зберегти'] 30 | |
212 | + Click Element xpath=//button[./text()='Зберегти'] | |
213 | + | |
214 | +видалити позиції | |
215 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
216 | + Wait Until Page Contains Element xpath=//a[./text()='Редагувати'] 30 | |
217 | + Click Element xpath=//a[./text()='Редагувати'] | |
218 | + : FOR ${INDEX} IN RANGE 1 ${ARGUMENTS[2]}-1 | |
219 | + \ sleep 5 | |
220 | + \ Click Element xpath=//a[@class='deleteMultiItem'][last()] | |
221 | + \ sleep 5 | |
222 | + \ Click Element xpath=//a[@class='jBtn green'] | |
223 | + Wait Until Page Contains Element xpath=//button[./text()='Зберегти'] 30 | |
224 | + Click Element xpath=//button[./text()='Зберегти'] | |
27 | 225 | |
28 | 226 | Пошук тендера по ідентифікатору |
29 | 227 | [Arguments] @{ARGUMENTS} |
30 | 228 | [Documentation] |
31 | 229 | ... ${ARGUMENTS[0]} == username |
32 | 230 | ... ${ARGUMENTS[1]} == tenderId |
33 | - ... ${ARGUMENTS[2]} == id | |
34 | 231 | Switch browser ${ARGUMENTS[0]} |
35 | - ${current_location}= Get Location | |
36 | - Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page | |
37 | 232 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} |
38 | - Wait Until Page Contains E-TENDER - центр електронної торгівлі 10 | |
233 | + Wait Until Page Contains Держзакупівлі.онлайн 10 | |
234 | + Click Element xpath=//a[text()='Закупівлі'] | |
235 | + sleep 1 | |
236 | + Click Element xpath=//select[@name='filter[object]']/option[@value='tenderID'] | |
237 | + Input text xpath=//input[@name='filter[search]'] ${ARGUMENTS[1]} | |
238 | + Click Element xpath=//button[@class='btn'][./text()='Пошук'] | |
239 | + Wait Until Page Contains ${ARGUMENTS[1]} 10 | |
240 | + Capture Page Screenshot | |
39 | 241 | sleep 1 |
40 | - Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]} | |
41 | - Click Link jquery=a[ng-click='search()'] | |
42 | - sleep 2 | |
43 | - ${last_note_id}= Add pointy note jquery=a[href^="#/tenderDetailes"] Found tender with tenderID "${ARGUMENTS[1]}" width=200 position=bottom | |
242 | + Click Element xpath=//a[@class='reverse tenderLink'] | |
243 | + | |
244 | +Задати питання | |
245 | + [Arguments] @{ARGUMENTS} | |
246 | + [Documentation] | |
247 | + ... ${ARGUMENTS[0]} == username | |
248 | + ... ${ARGUMENTS[1]} == tenderUaId | |
249 | + ... ${ARGUMENTS[2]} == questionId | |
250 | + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | |
251 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
252 | + | |
253 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
254 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
44 | 255 | sleep 1 |
45 | - Remove element ${last_note_id} | |
46 | - Click Link jquery=a[href^="#/tenderDetailes"] | |
47 | - Wait Until Page Contains ${ARGUMENTS[1]} 10 | |
256 | + Execute Javascript window.scroll(2500,2500) | |
257 | + Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20 | |
258 | + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] | |
259 | + Wait Until Page Contains Element name=title 20 | |
260 | + Input text name=title ${title} | |
261 | + Input text xpath=//textarea[@name='description'] ${description} | |
262 | + Click Element xpath=//div[contains(@class, 'buttons')]//button[@type='submit'] | |
263 | + Wait Until Page Contains ${title} 30 | |
264 | + Capture Page Screenshot | |
265 | + | |
266 | +Відповісти на питання | |
267 | + [Arguments] @{ARGUMENTS} | |
268 | + [Documentation] | |
269 | + ... ${ARGUMENTS[0]} = username | |
270 | + ... ${ARGUMENTS[1]} = tenderUaId | |
271 | + ... ${ARGUMENTS[2]} = 0 | |
272 | + ... ${ARGUMENTS[3]} = answer_data | |
273 | + | |
274 | + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer | |
275 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
276 | + | |
277 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
278 | + Execute Javascript window.scroll(1500,1500) | |
279 | + Wait Until Page Contains Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] 20 | |
280 | + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] | |
281 | + Wait Until Page Contains Element xpath=//textarea[@name='answer'] 20 | |
282 | + Input text xpath=//textarea[@name='answer'] ${answer} | |
283 | + Click Element xpath=//div[1]/div[3]/form/div/table/tbody/tr/td[2]/button | |
284 | + Wait Until Page Contains ${answer} 30 | |
285 | + Capture Page Screenshot | |
286 | + | |
287 | +Подати скаргу | |
288 | + [Arguments] @{ARGUMENTS} | |
289 | + [Documentation] | |
290 | + ... ${ARGUMENTS[0]} = username | |
291 | + ... ${ARGUMENTS[1]} = tenderUaId | |
292 | + ... ${ARGUMENTS[2]} = complaintsId | |
293 | + ${complaint}= Get From Dictionary ${ARGUMENTS[2].data} title | |
294 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
295 | + | |
296 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
297 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
48 | 298 | sleep 1 |
49 | - Capture Page Screenshot | |
\ No newline at end of file | ||
299 | + Execute Javascript window.scroll(1500,1500) | |
300 | + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Скарги']] | |
301 | + Wait Until Page Contains Element name=title 20 | |
302 | + Input text name=title ${complaint} | |
303 | + Input text xpath=//textarea[@name='description'] ${description} | |
304 | + Click Element xpath=//div[contains(@class, 'buttons')]//button[@type='submit'] | |
305 | + Wait Until Page Contains ${complaint} 30 | |
306 | + Capture Page Screenshot | |
307 | + | |
308 | +Порівняти скаргу | |
309 | + [Arguments] @{ARGUMENTS} | |
310 | + [Documentation] | |
311 | + ... ${ARGUMENTS[0]} = username | |
312 | + ... ${ARGUMENTS[1]} = tenderUaId | |
313 | + ... ${ARGUMENTS[2]} = complaintsData | |
314 | + ${complaint}= Get From Dictionary ${ARGUMENTS[2].data} title | |
315 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
316 | + | |
317 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
318 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
319 | + sleep 1 | |
320 | + Execute Javascript window.scroll(1500,1500) | |
321 | + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Скарги']] | |
322 | + Wait Until Page Contains ${complaint} 30 | |
323 | + Capture Page Screenshot | |
324 | + | |
325 | +Внести зміни в тендер | |
326 | + # Тест написано для уже існуючого тендеру, що знаходиться у чернетках користувача | |
327 | + [Arguments] @{ARGUMENTS} | |
328 | + [Documentation] | |
329 | + ... ${ARGUMENTS[0]} = username | |
330 | + ... ${ARGUMENTS[1]} = description | |
331 | + | |
332 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
333 | + Click Element xpath=//a[@class='reverse'][./text()='Мої закупівлі'] | |
334 | + Wait Until Page Contains Element xpath=//a[@class='reverse'][./text()='Чернетки'] 30 | |
335 | + Click Element xpath=//a[@class='reverse'][./text()='Чернетки'] | |
336 | + Wait Until Page Contains Element xpath=//a[@class='reverse tenderLink'] 30 | |
337 | + Click Element xpath=//a[@class='reverse tenderLink'] | |
338 | + sleep 1 | |
339 | + Click Element xpath=//a[@class='button save'][./text()='Редагувати'] | |
340 | + sleep 1 | |
341 | + Input text name=tender_title ${ARGUMENTS[1]} | |
342 | + sleep 1 | |
343 | + Click Element xpath=//button[@class='saveDraft'] | |
344 | + Wait Until Page Contains ${ARGUMENTS[1]} 30 | |
345 | + Capture Page Screenshot | |
346 | + | |
347 | +обновити сторінку з тендером | |
348 | + [Arguments] @{ARGUMENTS} | |
349 | + [Documentation] | |
350 | + ... ${ARGUMENTS[0]} = username | |
351 | + ... ${ARGUMENTS[1]} = tenderUaId | |
352 | + | |
353 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
354 | + netcast.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
355 | + Reload Page | |
356 | + | |
357 | +отримати інформацію із тендера | |
358 | + [Arguments] @{ARGUMENTS} | |
359 | + [Documentation] | |
360 | + ... ${ARGUMENTS[0]} == username | |
361 | + ... ${ARGUMENTS[1]} == fieldname | |
362 | + Switch browser ${ARGUMENTS[0]} | |
363 | + ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]} | |
364 | + [return] ${return_value} | |
365 | + | |
366 | +отримати тест із поля і показати на сторінці | |
367 | + [Arguments] ${fieldname} | |
368 | + sleep 1 | |
369 | + ${return_value}= Get Text ${locator.${fieldname}} | |
370 | + [return] ${return_value} | |
371 | + | |
372 | +отримати інформацію про title | |
373 | + ${title}= отримати тест із поля і показати на сторінці title | |
374 | + [return] ${title.split('.')[0]} | |
375 | + | |
376 | +отримати інформацію про description | |
377 | + ${description}= отримати тест із поля і показати на сторінці description | |
378 | + [return] ${description} | |
379 | + | |
380 | +отримати інформацію про tenderId | |
381 | + ${tenderId}= отримати тест із поля і показати на сторінці tenderId | |
382 | + [return] ${tenderId} | |
383 | + | |
384 | +отримати інформацію про value.amount | |
385 | + ${valueAmount}= отримати тест із поля і показати на сторінці value.amount | |
386 | + ${valueAmount}= Convert To Number ${valueAmount.split(' ')[0]} | |
387 | + [return] ${valueAmount} | |
388 | + | |
389 | +отримати інформацію про minimalStep.amount | |
390 | + ${minimalStepAmount}= отримати тест із поля і показати на сторінці minimalStep.amount | |
391 | + ${minimalStepAmount}= Convert To Number ${minimalStepAmount.split(' ')[0]} | |
392 | + [return] ${minimalStepAmount} | |
393 | + | |
394 | +отримати інформацію про enquiryPeriod.endDate | |
395 | + ${enquiryPeriodEndDate}= отримати тест із поля і показати на сторінці enquiryPeriod.endDate | |
396 | + ${enquiryPeriodEndDate}= subtract_from_time ${enquiryPeriodEndDate} 6 5 | |
397 | + [return] ${enquiryPeriodEndDate} | |
398 | + | |
399 | +отримати інформацію про tenderPeriod.endDate | |
400 | + ${tenderPeriodEndDate}= отримати тест із поля і показати на сторінці tenderPeriod.endDate | |
401 | + ${tenderPeriodEndDate}= subtract_from_time ${tenderPeriodEndDate} 11 0 | |
402 | + [return] ${tenderPeriodEndDate} | |
403 | + | |
404 | +отримати інформацію про items[0].deliveryAddress.countryName | |
405 | + ${countryName}= отримати тест із поля і показати на сторінці items[0].deliveryAddress.countryName | |
406 | + [return] ${countryName} | |
407 | + | |
408 | +отримати інформацію про items[0].classification.scheme | |
409 | + ${classificationScheme}= отримати тест із поля і показати на сторінці items[0].classification.scheme | |
410 | + [return] ${classificationScheme.split(' ')[1]} | |
411 | + | |
412 | +отримати інформацію про items[0].additionalClassifications[0].scheme | |
413 | + ${additionalClassificationsScheme}= отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].scheme | |
414 | + [return] ${additionalClassificationsScheme.split(' ')[1]} | |
415 | + | |
416 | +отримати інформацію про questions[0].title | |
417 | + sleep 1 | |
418 | + Click Element xpath=//a[@class='reverse tenderLink'] | |
419 | + sleep 1 | |
420 | + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] | |
421 | + ${questionsTitle}= отримати тест із поля і показати на сторінці questions[0].title | |
422 | + ${questionsTitle}= Convert To Lowercase ${questionsTitle} | |
423 | + [return] ${questionsTitle.capitalize().split('.')[0] + '.'} | |
424 | + | |
425 | +отримати інформацію про questions[0].description | |
426 | + ${questionsDescription}= отримати тест із поля і показати на сторінці questions[0].description | |
427 | + [return] ${questionsDescription} | |
428 | + | |
429 | +отримати інформацію про questions[0].date | |
430 | + ${questionsDate}= отримати тест із поля і показати на сторінці questions[0].date | |
431 | + log ${questionsDate} | |
432 | + [return] ${questionsDate} | |
433 | + | |
434 | +отримати інформацію про questions[0].answer | |
435 | + sleep 1 | |
436 | + Click Element xpath=//a[@class='reverse tenderLink'] | |
437 | + sleep 1 | |
438 | + Click Element xpath=//a[@class='reverse openCPart'][span[text()='Обговорення']] | |
439 | + ${questionsAnswer}= отримати тест із поля і показати на сторінці questions[0].answer | |
440 | + [return] ${questionsAnswer} | |
441 | + | |
442 | +отримати інформацію про items[0].deliveryDate.endDate | |
443 | + ${deliveryDateEndDate}= отримати тест із поля і показати на сторінці items[0].deliveryDate.endDate | |
444 | + ${deliveryDateEndDate}= subtract_from_time ${deliveryDateEndDate} 15 0 | |
445 | + [return] ${deliveryDateEndDate} | |
446 | + | |
447 | +отримати інформацію про items[0].classification.id | |
448 | + ${classificationId}= отримати тест із поля і показати на сторінці items[0].classification.id | |
449 | + [return] ${classificationId} | |
450 | + | |
451 | +отримати інформацію про items[0].classification.description | |
452 | + ${classificationDescription}= отримати тест із поля і показати на сторінці items[0].classification.description | |
453 | + ${classificationDescription}= Run keyword if '${classificationDescription}' == 'Картонки' Convert To String Cartons | |
454 | + [return] ${classificationDescription} | |
455 | + | |
456 | +отримати інформацію про items[0].additionalClassifications[0].id | |
457 | + ${additionalClassificationsId}= отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].id | |
458 | + [return] ${additionalClassificationsId} | |
459 | + | |
460 | +отримати інформацію про items[0].additionalClassifications[0].description | |
461 | + ${additionalClassificationsDescription}= отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].description | |
462 | + ${additionalClassificationsDescription}= Convert To Lowercase ${additionalClassificationsDescription} | |
463 | + [return] ${additionalClassificationsDescription} | |
464 | + | |
465 | +отримати інформацію про items[0].quantity | |
466 | + ${itemsQuantity}= отримати тест із поля і показати на сторінці items[0].quantity | |
467 | + ${itemsQuantity}= Convert To Integer ${itemsQuantity} | |
468 | + [return] ${itemsQuantity} | |
469 | + | |
470 | +отримати інформацію про items[0].unit.code | |
471 | + ${unitCode}= отримати тест із поля і показати на сторінці items[0].unit.code | |
472 | + ${unitCode}= Run keyword if '${unitCode}'== 'кг' Convert To String KGM | |
473 | + [return] ${unitCode} | |
474 | + | |
475 | +отримати інформацію про procuringEntity.name | |
476 | + Log | Viewer can't see this information on Netcast console=yes | |
477 | + | |
478 | +отримати інформацію про enquiryPeriod.startDate | |
479 | + Log | Viewer can't see this information on Netcast console=yes | |
480 | + | |
481 | +отримати інформацію про tenderPeriod.startDate | |
482 | + Log | Viewer can't see this information on Netcast console=yes | |
483 | + | |
484 | +отримати інформацію про items[0].deliveryLocation.longitude | |
485 | + Log | Viewer can't see this information on Netcast console=yes | |
486 | + | |
487 | +отримати інформацію про items[0].deliveryLocation.latitude | |
488 | + Log | Viewer can't see this information on Netcast console=yes | |
489 | + | |
490 | +отримати інформацію про items[0].deliveryAddress.postalCode | |
491 | + Log | Viewer can't see this information on Netcast console=yes | |
492 | + | |
493 | +отримати інформацію про items[0].deliveryAddress.locality | |
494 | + Log | Viewer can't see this information on Netcast console=yes | |
495 | + | |
496 | +отримати інформацію про items[0].deliveryAddress.streetAddress | |
497 | + Log | Viewer can't see this information on Netcast console=yes | |
498 | + | |
499 | +отримати інформацію про items[0].deliveryAddress.region | |
500 | + Log | Viewer can't see this information on Netcast console=yes | |
501 | + | |
502 | +отримати інформацію про items[0].unit.name | |
503 | + Log | Viewer can't see this information on Netcast console=yes | ... | ... |
1 | +*** Setting *** | |
2 | +Library Selenium2Screenshots | |
3 | +Library String | |
4 | +Library DateTime | |
5 | + | |
6 | +*** Variables *** | |
7 | +${locator.title} xpath=//div[@ng-bind="tender.title"] | |
8 | +${locator.description} xpath=//div[@ng-bind="tender.description"] | |
9 | +${locator.edit.description} name=tenderDescription | |
10 | +${locator.value.amount} xpath=//div[@ng-bind="tender.value.amount"] | |
11 | +${locator.minimalStep.amount} xpath=//div[@ng-bind="tender.minimalStep.amount"] | |
12 | +${locator.tenderId} xpath=//a[@class="ng-binding ng-scope"] | |
13 | +${locator.procuringEntity.name} xpath=//div[@ng-bind="tender.procuringEntity.name"] | |
14 | +${locator.enquiryPeriod.StartDate} id=start-date-qualification | |
15 | +${locator.enquiryPeriod.endDate} id=end-date-qualification | |
16 | +${locator.tenderPeriod.startDate} id=start-date-registration | |
17 | +${locator.tenderPeriod.endDate} id=end-date-registration | |
18 | +${locator.items[0].deliveryAddress} id=deliveryAddress | |
19 | +${locator.items[0].deliveryDate.endDate} id=end-date-delivery | |
20 | +${locator.items[0].description} xpath=//div[@ng-bind="item.description"] | |
21 | +${locator.items[0].classification.scheme} id=classifier | |
22 | +${locator.items[0].classification.scheme.title} xpath=//label[contains(., "Классификатор CPV")] | |
23 | +${locator.items[0].additional_classification[0].scheme} id=classifier2 | |
24 | +${locator.items[0].additional_classification[0].scheme.title} xpath=//label[@for="classifier2"] | |
25 | +${locator.items[0].quantity} id=quantity | |
26 | +${locator.items[0].unit.name} xpath=//span[@class="unit ng-binding"] | |
27 | +${locator.edit_tender} xpath=//button[@ng-if="actions.can_edit_tender"] | |
28 | +${locator.edit.add_item} xpath=//a[@class="icon-black plus-black remove-field ng-scope"] | |
29 | +${locator.save} xpath=//button[@class="btn btn-lg btn-default cancel pull-right ng-binding"] | |
30 | +${locator.QUESTIONS[0].title} xpath=//span[@class="user ng-binding"] | |
31 | +${locator.QUESTIONS[0].description} xpath=//span[@class="question-description ng-binding"] | |
32 | +${locator.QUESTIONS[0].date} xpath=//span[@class="date ng-binding"] | |
33 | + | |
34 | + | |
35 | +*** Keywords *** | |
36 | +Підготувати дані для оголошення тендера | |
37 | + ${INITIAL_TENDER_DATA}= prepare_test_tender_data | |
38 | + ${INITIAL_TENDER_DATA}= Add_data_for_GUI_FrontEnds ${INITIAL_TENDER_DATA} | |
39 | + ${INITIAL_TENDER_DATA}= Update_data_for_Newtend ${INITIAL_TENDER_DATA} | |
40 | + [return] ${INITIAL_TENDER_DATA} | |
41 | + | |
42 | +Підготувати клієнт для користувача | |
43 | + [Arguments] @{ARGUMENTS} | |
44 | + [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | |
45 | + ... ${ARGUMENTS[0]} == username | |
46 | + Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | |
47 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | |
48 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | |
49 | + Run Keyword If '${username}' != 'Newtend_Viewer' Login | |
50 | + | |
51 | +Login | |
52 | + Wait Until Page Contains Element id=indexpage_login 20 | |
53 | + Click Element id=indexpage_login | |
54 | + Wait Until Page Contains Element id=password 20 | |
55 | + Input text id=login-email ${USERS.users['${username}'].login} | |
56 | + Input text id=password ${USERS.users['${username}'].password} | |
57 | + Click Element id=submit-login-button | |
58 | + Wait Until Page Contains Element xpath =//a[@class="close-modal-dialog"] 20 | |
59 | + Go to ${USERS.users['${ARGUMENTS[0]}'].homepage} | |
60 | +# Wait Until Page Contains Element xpath=//div[@class="introjs-overlay"] 20 | |
61 | + | |
62 | +Створити тендер | |
63 | + [Arguments] @{ARGUMENTS} | |
64 | + [Documentation] | |
65 | + ... ${ARGUMENTS[0]} == username | |
66 | + ... ${ARGUMENTS[1]} == initial_tender_data | |
67 | +## Inicialisation | |
68 | + #${prepared_tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]} | |
69 | + ${INITIAL_TENDER_DATA}= Add_data_for_GUI_FrontEnds ${INITIAL_TENDER_DATA} | |
70 | + ${INITIAL_TENDER_DATA}= Update_data_for_Newtend ${INITIAL_TENDER_DATA} | |
71 | + ${items}= Get From Dictionary ${INITIAL_TENDER_DATA.data} items | |
72 | + ${title}= Get From Dictionary ${INITIAL_TENDER_DATA.data} title | |
73 | + ${description}= Get From Dictionary ${INITIAL_TENDER_DATA.data} description | |
74 | + ${budget}= Get From Dictionary ${INITIAL_TENDER_DATA.data.value} amount | |
75 | + ${step_rate}= Get From Dictionary ${INITIAL_TENDER_DATA.data.minimalStep} amount | |
76 | + ${start_date}= Get From Dictionary ${INITIAL_TENDER_DATA.data.tenderPeriod} startDate | |
77 | + ${end_date}= Get From Dictionary ${INITIAL_TENDER_DATA.data.tenderPeriod} endDate | |
78 | + ${enquiry_start_date}= Get From Dictionary ${INITIAL_TENDER_DATA.data.enquiryPeriod} startDate | |
79 | + ${enquiry_end_date}= Get From Dictionary ${INITIAL_TENDER_DATA.data.enquiryPeriod} endDate | |
80 | + | |
81 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
82 | + Go To ${USERS.users['${username}'].homepage} | |
83 | + Wait Until Page Contains Element xpath=//a[@href="#/create-tender"] 100 | |
84 | + Click Link xpath=//a[@href="#/create-tender"] | |
85 | + Wait Until Page Contains Новый тендер 100 | |
86 | +# Input fields tender | |
87 | + Input text name=tenderName ${title} | |
88 | + Input text ${locator.edit.description} ${description} | |
89 | + Input text id=budget ${budget} | |
90 | + Click Element id=with-nds | |
91 | + Input text id=step ${step_rate} | |
92 | +# Add Item(s) | |
93 | + Додати придмет ${items[0]} 0 | |
94 | + Run Keyword If '${mode}' == 'multi' Додати багато придметів items | |
95 | +# Set tender datatimes | |
96 | + Set datetime start-date-registration ${start_date} | |
97 | + Set datetime end-date-registration ${end_date} | |
98 | + Set datetime end-date-qualification ${enquiry_end_date} | |
99 | + Set datetime start-date-qualification ${enquiry_start_date} | |
100 | +# Save | |
101 | + Click Element ${locator.save} | |
102 | + Wait Until Page Contains Element xpath=//div[@ng-click="goHome()"] 30 | |
103 | + Click Element xpath=//div[@ng-click="goHome()"] | |
104 | +# Get Ids | |
105 | + Wait Until Page Contains Element xpath=//div[@class="title"] 30 | |
106 | + ${tender_UAid}= Get Text xpath=//div[@class="title"] | |
107 | + ${Ids}= Convert To String ${tender_UAid} | |
108 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | |
109 | + [return] ${Ids} | |
110 | + | |
111 | +Set Multi Ids | |
112 | + [Arguments] @{ARGUMENTS} | |
113 | + [Documentation] | |
114 | + ... ${ARGUMENTS[0]} == ${tender_UAid} | |
115 | + ${current_location}= Get Location | |
116 | + ${id}= Get Substring ${current_location} -41 -9 | |
117 | + ${Ids}= Create List ${tender_UAid} ${id} | |
118 | + | |
119 | +Set datetime | |
120 | + [Arguments] @{ARGUMENTS} | |
121 | + [Documentation] | |
122 | + ... ${ARGUMENTS[0]} == control_id | |
123 | + ... ${ARGUMENTS[1]} == date | |
124 | +#Pick Date | |
125 | + Click Element xpath=//input[@id="${ARGUMENTS[0]}"]/../span[@class="calendar-btn"] | |
126 | + Wait Until Page Contains Element xpath=//td[@class="text-center ng-scope"] 30 | |
127 | + ${datapicker_id}= Get Element Attribute xpath=//input[@id="${ARGUMENTS[0]}"]/..//td[@class="text-center ng-scope"]@id | |
128 | + ${datapicker_id}= Get Substring ${datapicker_id} 0 -1 | |
129 | + ${date_index}= newtend_date_picker_index ${ARGUMENTS[1]} | |
130 | + ${datapicker_id}= Convert To String ${datapicker_id}${date_index} | |
131 | + Click Element xpath=//input[@id="${ARGUMENTS[0]}"]/..//td[@id="${datapicker_id}"]/button | |
132 | +#Set time | |
133 | + ${hous}= Get Substring ${ARGUMENTS[1]} 11 13 | |
134 | + ${minutes}= Get Substring ${ARGUMENTS[1]} 14 16 | |
135 | + Input text xpath=//input[@id="${ARGUMENTS[0]}"]/../..//input[@ng-model="hours"] ${hous} | |
136 | + Input text xpath=//input[@id="${ARGUMENTS[0]}"]/../..//input[@ng-model="minutes"] ${minutes} | |
137 | + | |
138 | +Додати придмет | |
139 | + [Arguments] @{ARGUMENTS} | |
140 | + [Documentation] | |
141 | + ... ${ARGUMENTS[0]} == items_n | |
142 | + ... ${ARGUMENTS[1]} == index | |
143 | +## Get values for item | |
144 | + ${items_description}= Get From Dictionary ${ARGUMENTS[0]} description | |
145 | + ${quantity}= Get From Dictionary ${ARGUMENTS[0]} quantity | |
146 | + ${cpv}= Convert To String Картонки | |
147 | + ${dkpp_desc}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description | |
148 | + ${dkpp_id}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id | |
149 | + ${unit}= Get From Dictionary ${ARGUMENTS[0].unit} name | |
150 | + ${deliverydate_end_date}= Get From Dictionary ${ARGUMENTS[0].deliveryDate} endDate | |
151 | + ${countryName}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} countryName | |
152 | + ${ZIP}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} postalCode | |
153 | + ${region}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} region | |
154 | + ${locality}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} locality | |
155 | + ${streetAddress}= Get From Dictionary ${ARGUMENTS[0].deliveryAddress} streetAddress | |
156 | + | |
157 | + Set datetime end-date-delivery${ARGUMENTS[1]} ${deliverydate_end_date} | |
158 | +# Set CPV | |
159 | + Wait Until Page Contains Element id=classifier1${ARGUMENTS[1]} | |
160 | + Click Element id=classifier1${ARGUMENTS[1]} | |
161 | + Wait Until Page Contains Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] 100 | |
162 | + Input text xpath=//input[@class="ng-pristine ng-untouched ng-valid"] ${cpv} | |
163 | + Wait Until Page Contains Element xpath=//span[contains(text(),'${cpv}')] 20 | |
164 | + Click Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] | |
165 | + Click Element xpath=//button[@class="btn btn-default btn-lg pull-right choose ng-binding"] | |
166 | +# Set ДКПП | |
167 | + Click Element id=classifier2${ARGUMENTS[1]} | |
168 | + Wait Until Page Contains Element xpath=//input[@class="ng-pristine ng-untouched ng-valid"] 100 | |
169 | + Input text xpath=//input[@class="ng-pristine ng-untouched ng-valid"] ${dkpp_desc} | |
170 | + Wait Until Page Contains Element xpath=//span[contains(text(),'${dkpp_id}')] 100 | |
171 | + Click Element xpath=//span[contains(text(),'${dkpp_id}')]/../..//input[@class="ng-pristine ng-untouched ng-valid"] | |
172 | + Click Element xpath=//button[@class="btn btn-default btn-lg pull-right choose ng-binding"] | |
173 | +# Set Delivery Address | |
174 | + Click Element id=deliveryAddress${ARGUMENTS[1]} | |
175 | + Wait Until Page Contains Element xpath=//input[@ng-model="deliveryAddress.postalCode"] 20 | |
176 | + Input text xpath=//input[@ng-model="deliveryAddress.postalCode"] ${ZIP} | |
177 | + Input text xpath=//input[@ng-model="deliveryAddress.region"] ${region} | |
178 | + Input text xpath=//input[@ng-model="deliveryAddress.locality"] ${locality} | |
179 | + Input text xpath=//input[@ng-model="deliveryAddress.streetAddress"] ${streetAddress} | |
180 | + Click Element xpath=//button[@class="btn btn-lg single-btn ng-binding"] | |
181 | +# Add item main info | |
182 | + Click Element xpath=//a[contains(text(), "единицы измерения")] | |
183 | + Click Element xpath=//a[contains(text(), "единицы измерения")]/..//a[contains(text(), '${unit}')] | |
184 | + Input text id=quantity${ARGUMENTS[1]} ${quantity} | |
185 | + Input text id=itemDescription${ARGUMENTS[1]} ${items_description} | |
186 | + | |
187 | +Додати багато придметів | |
188 | + [Arguments] @{ARGUMENTS} | |
189 | + [Documentation] | |
190 | + ... ${ARGUMENTS[0]} == items | |
191 | + ${Items_length}= Get Length ${items} | |
192 | + : FOR ${INDEX} IN RANGE 1 ${Items_length} | |
193 | + \ Click Element ${locator.edit.add_item} | |
194 | + \ Додати придмет ${items[${INDEX}]} ${INDEX} | |
195 | + | |
196 | +Завантажити документ | |
197 | + [Arguments] @{ARGUMENTS} | |
198 | + [Documentation] | |
199 | + ... ${ARGUMENTS[0]} == username | |
200 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
201 | + ... ${ARGUMENTS[2]} == ${Complain} | |
202 | + Fail Тест не написаний | |
203 | + | |
204 | +Подати скаргу | |
205 | + [Arguments] @{ARGUMENTS} | |
206 | + [Documentation] | |
207 | + ... ${ARGUMENTS[0]} == username | |
208 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
209 | + ... ${ARGUMENTS[2]} == ${Complain} | |
210 | + Fail Не реалізований функціонал | |
211 | + | |
212 | +порівняти скаргу | |
213 | + [Arguments] @{ARGUMENTS} | |
214 | + [Documentation] | |
215 | + ... ${ARGUMENTS[0]} == username | |
216 | + ... ${ARGUMENTS[1]} == ${file_path} | |
217 | + ... ${ARGUMENTS[2]} == ${TENDER_UAID} | |
218 | + Fail Не реалізований функціонал | |
219 | + | |
220 | +Пошук тендера по ідентифікатору | |
221 | + [Arguments] @{ARGUMENTS} | |
222 | + [Documentation] | |
223 | + ... ${ARGUMENTS[0]} == username | |
224 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} | |
225 | + Switch browser ${ARGUMENTS[0]} | |
226 | + Go to ${USERS.users['${ARGUMENTS[0]}'].homepage} | |
227 | +### Індексація на тестовому сервері відключена, як наслідок пошук по UAid не працює, отож застосовую обхід цієї функціональності для розблокування наступних тестів | |
228 | +# Wait Until Page Contains Element xpath=//div[@class="search-field"]/input 20 | |
229 | +# #${ARGUMENTS[1]}= Convert To String UA-2015-06-08-000023 | |
230 | +# Input text xpath=//div[@class="search-field"]/input ${ARGUMENTS[1]} | |
231 | +# : FOR ${INDEX} IN RANGE 1 30 | |
232 | +# \ Log To Console . no_newline=true | |
233 | +# \ sleep 1 | |
234 | +# \ ${count}= Get Matching Xpath Count xpath=//a[@class="row tender-info ng-scope"] | |
235 | +# \ Exit For Loop If '${count}' == '1' | |
236 | + Sleep 2 | |
237 | + Go to ${USERS.users['${ARGUMENTS[0]}'].homepage} | |
238 | + ${ARGUMENTS[1]}= Convert To String Воркераунд для проходженя наступних тестів - пошук не працює. | |
239 | +### | |
240 | + Wait Until Page Contains Element xpath=(//a[@class="row tender-info ng-scope"]) 20 | |
241 | + Sleep 5 | |
242 | + Click Element xpath=(//a[@class="row tender-info ng-scope"]) | |
243 | + Wait Until Page Contains Element xpath=//a[@class="ng-binding ng-scope"]|//span[@class="ng-binding ng-scope"] 30 | |
244 | + | |
245 | + | |
246 | +отримати інформацію із тендера | |
247 | + [Arguments] @{ARGUMENTS} | |
248 | + [Documentation] | |
249 | + ... ${ARGUMENTS[0]} == username | |
250 | + ... ${ARGUMENTS[1]} == fieldname | |
251 | + Switch browser ${ARGUMENTS[0]} | |
252 | + ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]} | |
253 | + [return] ${return_value} | |
254 | + | |
255 | +отримати текст із поля і показати на сторінці | |
256 | + [Arguments] ${fieldname} | |
257 | + sleep 1 | |
258 | + ${return_value}= Get Text ${locator.${fieldname}} | |
259 | + [return] ${return_value} | |
260 | + | |
261 | +отримати інформацію про title | |
262 | + ${title}= отримати текст із поля і показати на сторінці title | |
263 | + [return] ${title} | |
264 | + | |
265 | +отримати інформацію про description | |
266 | + ${description}= отримати текст із поля і показати на сторінці description | |
267 | + [return] ${description} | |
268 | + | |
269 | +отримати інформацію про tenderId | |
270 | + ${tenderId}= отримати текст із поля і показати на сторінці tenderId | |
271 | + [return] ${tenderId} | |
272 | + | |
273 | +отримати інформацію про value.amount | |
274 | + ${valueAmount}= отримати текст із поля і показати на сторінці value.amount | |
275 | + ${valueAmount}= Convert To Number ${valueAmount.split(' ')[0]} | |
276 | + [return] ${valueAmount} | |
277 | + | |
278 | +отримати інформацію про minimalStep.amount | |
279 | + ${minimalStepAmount}= отримати текст із поля і показати на сторінці minimalStep.amount | |
280 | + ${minimalStepAmount}= Convert To Number ${minimalStepAmount.split(' ')[0]} | |
281 | + [return] ${minimalStepAmount} | |
282 | + | |
283 | +Внести зміни в тендер | |
284 | + [Arguments] @{ARGUMENTS} | |
285 | + [Documentation] | |
286 | + ... ${ARGUMENTS[0]} == username | |
287 | + ... ${ARGUMENTS[1]} == id | |
288 | + ... ${ARGUMENTS[2]} == fieldname | |
289 | + ... ${ARGUMENTS[3]} == fieldvalue | |
290 | + Switch browser ${ARGUMENTS[0]} | |
291 | + Click button ${locator.edit_tender} | |
292 | + Wait Until Page Contains Element ${locator.edit.${ARGUMENTS[2]}} 20 | |
293 | + Input Text ${locator.edit.${ARGUMENTS[2]}} ${ARGUMENTS[3]} | |
294 | + Click Element ${locator.save} | |
295 | + Wait Until Page Contains Element ${locator.${ARGUMENTS[2]}} 20 | |
296 | + ${result_field}= отримати текст із поля і показати на сторінці ${ARGUMENTS[2]} | |
297 | + Should Be Equal ${result_field} ${ARGUMENTS[3]} | |
298 | + | |
299 | +отримати інформацію про procuringEntity.name | |
300 | + ${procuringEntity_name}= отримати текст із поля і показати на сторінці procuringEntity.name | |
301 | + [return] ${procuringEntity_name} | |
302 | + | |
303 | +отримати інформацію про enquiryPeriod.endDate | |
304 | + ${enquiryPeriodEndDate}= отримати текст із поля і показати на сторінці enquiryPeriod.endDate | |
305 | + [return] ${enquiryPeriodEndDate} | |
306 | + | |
307 | +отримати інформацію про tenderPeriod.startDate | |
308 | + ${tenderPeriodStartDate}= отримати текст із поля і показати на сторінці tenderPeriod.startDate | |
309 | + [return] ${tenderPeriodStartDate} | |
310 | + | |
311 | +отримати інформацію про tenderPeriod.endDate | |
312 | + ${tenderPeriodEndDate}= отримати текст із поля і показати на сторінці tenderPeriod.endDate | |
313 | + [return] ${tenderPeriodEndDate} | |
314 | + | |
315 | +отримати інформацію про enquiryPeriod.startDate | |
316 | + ${enquiryPeriodStartDate}= отримати текст із поля і показати на сторінці enquiryPeriod.StartDate | |
317 | + [return] ${enquiryPeriodStartDate} | |
318 | + | |
319 | +отримати інформацію про items[0].description | |
320 | + ${description}= отримати текст із поля і показати на сторінці items[0].description | |
321 | + [return] ${description} | |
322 | + | |
323 | +отримати інформацію про items[0].deliveryDate.endDate | |
324 | + ${deliveryDate_endDate}= отримати текст із поля і показати на сторінці items[0].deliveryDate.endDate | |
325 | + [return] ${deliveryDate_endDate} | |
326 | + | |
327 | +отримати інформацію про items[0].deliveryLocation.latitude | |
328 | + Fail Не реалізований функціонал | |
329 | + | |
330 | +отримати інформацію про items[0].deliveryLocation.longitude | |
331 | + Fail Не реалізований функціонал | |
332 | + | |
333 | +## Delivery Address | |
334 | +отримати інформацію про items[0].deliveryAddress.countryName | |
335 | + ${Delivery_Address}= отримати текст із поля і показати на сторінці items[0].deliveryAddress | |
336 | + [return] ${Delivery_Address.split(', ')[1]} | |
337 | + | |
338 | +отримати інформацію про items[0].deliveryAddress.postalCode | |
339 | + ${Delivery_Address}= отримати текст із поля і показати на сторінці items[0].deliveryAddress | |
340 | + [return] ${Delivery_Address.split(', ')[0]} | |
341 | + | |
342 | +отримати інформацію про items[0].deliveryAddress.region | |
343 | + ${Delivery_Address}= отримати текст із поля і показати на сторінці items[0].deliveryAddress | |
344 | + [return] ${Delivery_Address.split(', ')[2]} | |
345 | + | |
346 | +отримати інформацію про items[0].deliveryAddress.locality | |
347 | + ${Delivery_Address}= отримати текст із поля і показати на сторінці items[0].deliveryAddress | |
348 | + [return] ${Delivery_Address.split(', ')[3]} | |
349 | + | |
350 | +отримати інформацію про items[0].deliveryAddress.streetAddress | |
351 | + ${Delivery_Address}= отримати текст із поля і показати на сторінці items[0].deliveryAddress | |
352 | + ${Delivery_Address}= Get Substring ${Delivery_Address}= 0 -2 | |
353 | + [return] ${Delivery_Address.split(', ')[4]} | |
354 | + | |
355 | +##CPV | |
356 | +отримати інформацію про items[0].classification.scheme | |
357 | + ${classificationScheme}= отримати текст із поля і показати на сторінці items[0].classification.scheme.title | |
358 | + [return] ${classificationScheme.split(' ')[1]} | |
359 | + | |
360 | +отримати інформацію про items[0].classification.id | |
361 | + ${classification_id}= отримати текст із поля і показати на сторінці items[0].classification.scheme | |
362 | + [return] ${classification_id.split(' - ')[0]} | |
363 | + | |
364 | +отримати інформацію про items[0].classification.description | |
365 | + ${classification_description}= отримати текст із поля і показати на сторінці items[0].classification.scheme | |
366 | + ${classification_description}= Run Keyword If '${classification_description}' == '44617100-9 - Картонки' Convert To String Cartons | |
367 | + [return] ${classification_description} | |
368 | + | |
369 | +##ДКПП | |
370 | +отримати інформацію про items[0].additionalClassifications[0].scheme | |
371 | + ${additional_classificationScheme}= отримати текст із поля і показати на сторінці items[0].additional_classification[0].scheme.title | |
372 | + [return] ${additional_classificationScheme.split(' ')[1]} | |
373 | + | |
374 | +отримати інформацію про items[0].additionalClassifications[0].id | |
375 | + ${additional_classification_id}= отримати текст із поля і показати на сторінці items[0].additional_classification[0].scheme | |
376 | + [return] ${additional_classification_id.split(' - ')[0]} | |
377 | + | |
378 | +отримати інформацію про items[0].additionalClassifications[0].description | |
379 | + ${additional_classification_description}= отримати текст із поля і показати на сторінці items[0].additional_classification[0].scheme | |
380 | + ${additional_classification_description}= Convert To Lowercase ${additional_classification_description} | |
381 | + ${additional_classification_description}= Get Substring ${additional_classification_description}= 0 -2 | |
382 | + [return] ${additional_classification_description.split(' - ')[1]} | |
383 | + | |
384 | +##item | |
385 | +отримати інформацію про items[0].unit.name | |
386 | + ${unit_name}= отримати текст із поля і показати на сторінці items[0].unit.name | |
387 | + ${unit_name}= Run Keyword If '${unit_name}' == 'килограммы' Convert To String кілограм | |
388 | + [return] ${unit_name} | |
389 | + | |
390 | +отримати інформацію про items[0].unit.code | |
391 | + Fail Не реалізований функціонал | |
392 | + ${unit_code}= отримати текст із поля і показати на сторінці items[0].unit.code | |
393 | + [return] ${unit_code} | |
394 | + | |
395 | +отримати інформацію про items[0].quantity | |
396 | + ${quantity}= отримати текст із поля і показати на сторінці items[0].quantity | |
397 | + ${quantity}= Convert To Number ${quantity} | |
398 | + [return] ${quantity} | |
399 | + | |
400 | +додати предмети закупівлі | |
401 | + [Arguments] @{ARGUMENTS} | |
402 | + [Documentation] | |
403 | + ... ${ARGUMENTS[0]} = username | |
404 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
405 | + ... ${ARGUMENTS[2]} = 3 | |
406 | + ${ADDITIONAL_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} multi | |
407 | + ${items}= Get From Dictionary ${ADDITIONAL_DATA.data} items | |
408 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
409 | + Wait Until Page Contains Element ${locator.edit_tender} 10 | |
410 | + Click Element ${locator.edit_tender} | |
411 | + Wait Until Page Contains Element ${locator.edit.add_item} 10 | |
412 | + Input text ${locator.edit.description} description | |
413 | + Run keyword if '${TEST NAME}' == 'Можливість додати позицію закупівлі в тендер' додати позицію | |
414 | + Run keyword if '${TEST NAME}' != 'Можливість додати позицію закупівлі в тендер' забрати позицію | |
415 | + Wait Until Page Contains Element ${locator.save} 10 | |
416 | + Click Element ${locator.save} | |
417 | + Wait Until Page Contains Element ${locator.description} 20 | |
418 | + | |
419 | +додати позицію | |
420 | +### Не видно контролів додати пропозицію в хромі, потрібно скролити, скрол не працює. Обхід: додати лише 1 пропозицію + редагувати description для скролу. | |
421 | + Click Element ${locator.edit.add_item} | |
422 | + Додати придмет ${items[1]} 1 | |
423 | + | |
424 | +забрати позицію | |
425 | + Click Element xpath=//a[@title="Добавить лот"]/preceding-sibling::a | |
426 | + | |
427 | + | |
428 | +Задати питання | |
429 | + [Arguments] @{ARGUMENTS} | |
430 | + [Documentation] | |
431 | + ... ${ARGUMENTS[0]} = username | |
432 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
433 | + ... ${ARGUMENTS[2]} = question_data | |
434 | + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title | |
435 | + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description | |
436 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
437 | + newtend.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} | |
438 | + Click Element xpath=//a[contains(text(), "Уточнения")] | |
439 | + Wait Until Page Contains Element xpath=//button[@class="btn btn-lg btn-default question-btn ng-binding ng-scope"] 20 | |
440 | + Click Element xpath=//button[@class="btn btn-lg btn-default question-btn ng-binding ng-scope"] | |
441 | + Wait Until Page Contains Element xpath=//input[@ng-model="title"] 10 | |
442 | + Input text xpath=//input[@ng-model="title"] ${title} | |
443 | + Input text xpath=//textarea[@ng-model="message"] ${description} | |
444 | + Click Element xpath=//div[@ng-click="sendQuestion()"] | |
445 | + Wait Until Page Contains ${description} 20 | |
446 | + | |
447 | +обновити сторінку з тендером | |
448 | + [Arguments] @{ARGUMENTS} | |
449 | + [Documentation] | |
450 | + ... ${ARGUMENTS[0]} = username | |
451 | + ... ${ARGUMENTS[1]} = ${TENDER_UAID} | |
452 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
453 | + Reload Page | |
454 | + Wait Until Page Contains ${ARGUMENTS[1]} 20 | |
455 | + | |
456 | +отримати інформацію про QUESTIONS[0].title | |
457 | + Wait Until Page Contains Element xpath=//span[contains(text(), "Уточнения")] 20 | |
458 | + Click Element xpath=//span[contains(text(), "Уточнения")] | |
459 | + Wait Until Page Contains Вы не можете задавать вопросы 20 | |
460 | + ${resp}= отримати текст із поля і показати на сторінці QUESTIONS[0].title | |
461 | + [return] ${resp} | |
462 | + | |
463 | +отримати інформацію про QUESTIONS[0].description | |
464 | + ${resp}= отримати текст із поля і показати на сторінці QUESTIONS[0].description | |
465 | + [return] ${resp} | |
466 | + | |
467 | +отримати інформацію про QUESTIONS[0].date | |
468 | + ${resp}= отримати текст із поля і показати на сторінці QUESTIONS[0].date | |
469 | + ${resp}= Change_day_to_month ${resp} | |
470 | + [return] ${resp} | |
471 | + | |
472 | +Change_day_to_month | |
473 | + [Arguments] @{ARGUMENTS} | |
474 | + [Documentation] | |
475 | + ... ${ARGUMENTS[0]} == date | |
476 | + ${day}= Get Substring ${ARGUMENTS[0]} 0 2 | |
477 | + ${month}= Get Substring ${ARGUMENTS[0]} 3 6 | |
478 | + ${rest}= Get Substring ${ARGUMENTS[0]} 5 | |
479 | + ${return_value}= Convert To String ${month}${day}${rest} | |
480 | + [return] ${return_value} | ... | ... |
... | ... | @@ -3,14 +3,154 @@ Library Selenium2Screenshots |
3 | 3 | Library String |
4 | 4 | Library DateTime |
5 | 5 | |
6 | +*** Variables *** | |
7 | +${mail} test@mail.com | |
8 | +${telephone} +380976535447 | |
9 | + | |
10 | + | |
6 | 11 | *** Keywords *** |
7 | 12 | Підготувати клієнт для користувача |
8 | - [Arguments] ${username} | |
13 | + [Arguments] @{ARGUMENTS} | |
9 | 14 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо |
10 | - Open Browser ${BROKERS['${USERS.users['${username}'].broker}'].url} ${USERS.users['${username}'].browser} alias=${username} | |
11 | - Set Window Position @{USERS.users['${username}'].position} | |
12 | - Set Window Size @{USERS.users['${username}'].size} | |
13 | - Log Variables | |
15 | + ... ${ARGUMENTS[0]} == username | |
16 | + Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]} | |
17 | + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size} | |
18 | + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position} | |
19 | + | |
20 | +# login | |
21 | + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:j_idt54 10 | |
22 | + Click Element id=mForm:j_idt54 | |
23 | + Run Keyword And Ignore Error Wait Until Page Contains Element id=mForm:email 10 | |
24 | + Input text id=mForm:email ${USERS.users['${username}'].login} | |
25 | + Sleep 2 | |
26 | + Input text id=mForm:pwd ${USERS.users['${username}'].password} | |
27 | + Click Button id=mForm:login | |
28 | + | |
29 | +Створити тендер | |
30 | + [Arguments] @{ARGUMENTS} | |
31 | + [Documentation] | |
32 | + ... ${ARGUMENTS[0]} == username | |
33 | + ... ${ARGUMENTS[1]} == tender_data | |
34 | + ${file_path}= local_path_to_file TestDocument.docx | |
35 | + ${prepared_tender_data}= Add_data_for_GUI_FrontEnds ${ARGUMENTS[1]} | |
36 | + ${items}= Get From Dictionary ${prepared_tender_data.data} items | |
37 | + ${title}= Get From Dictionary ${prepared_tender_data.data} title | |
38 | + ${description}= Get From Dictionary ${prepared_tender_data.data} description | |
39 | + ${budget}= Get From Dictionary ${prepared_tender_data.data.value} amount | |
40 | + ${step_rate}= Get From Dictionary ${prepared_tender_data.data.minimalStep} amount | |
41 | + ${countryName}= Get From Dictionary ${prepared_tender_data.data.procuringEntity.address} countryName | |
42 | + ${delivery_end_date}= Get From Dictionary ${items[0].deliveryDate} endDate | |
43 | + ${delivery_end_date}= convert_date_to_prom_format ${delivery_end_date} | |
44 | + ${cpv}= Convert To String "Картонки" | |
45 | + ${cpv_id}= Get From Dictionary ${items[0].classification} id | |
46 | + ${cpv_id_1}= Get Substring ${cpv_id} 0 3 | |
47 | + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description | |
48 | + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id | |
49 | + ${code}= Get From Dictionary ${items[0].unit} code | |
50 | + ${quantity}= Get From Dictionary ${items[0]} quantity | |
51 | + ${name}= Get From Dictionary ${prepared_tender_data.data.procuringEntity.contactPoint} name | |
52 | + | |
53 | + Selenium2Library.Switch Browser ${ARGUMENTS[0]} | |
54 | + Wait Until Page Contains Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля'] 10 | |
55 | + Click Element xpath=//*[contains(@class, 'ui-button-text ui-c')][./text()='Нова закупівля'] | |
56 | + Wait Until Page Contains Element id=mForm:data:name | |
57 | + Input text id=mForm:data:name ${title} | |
58 | + Input text id=mForm:data:desc ${description} | |
59 | + Input text id=mForm:data:budget ${budget} | |
60 | + Input text id=mForm:data:step ${step_rate} | |
61 | + Click Element xpath=//*[@id='mForm:data:vat']/tbody/tr/td[1]//span | |
62 | + Input text id=mForm:data:dEPr_input ${delivery_end_date} | |
63 | + Click Element id=mForm:data:cKind_label | |
64 | + Click Element xpath=//div[@id='mForm:data:cKind_panel']//li[3] | |
65 | + Input text id=mForm:data:cCpvGr_input ${cpv_id_1} | |
66 | + Wait Until Page Contains Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span 10 | |
67 | + Click Element xpath=.//*[@id='mForm:data:cCpvGr_panel']/table/tbody/tr/td[2]/span | |
68 | + Input text id=mForm:data:subject0 ${dkpp_desc} | |
69 | + Input text id=mForm:data:cCpv0_input ${cpv_id} | |
70 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span 10 | |
71 | + Click Element xpath=//div[@id='mForm:data:cCpv0_panel']//td[1]/span | |
72 | + Input text id=mForm:data:unit0_input ${code} | |
73 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1] 10 | |
74 | + Click Element xpath=//div[@id='mForm:data:unit0_panel']//tr/td[1] | |
75 | + Input text id=mForm:data:amount0 ${quantity} | |
76 | + Input text id=mForm:data:cDkpp0_input ${dkpp_id} | |
77 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span 10 | |
78 | + Click Element xpath=//div[@id='mForm:data:cDkpp0_panel']//tr[1]/td[2]/span | |
79 | + Input text id=mForm:data:rName ${name} | |
80 | + Input text id=mForm:data:rPhone ${telephone} | |
81 | + Input text id=mForm:data:rMail ${mail} | |
82 | + Choose File id=mForm:data:docFile_input ${file_path} | |
83 | + Sleep 2 | |
84 | + Run Keyword if '${mode}' == 'multi' Додати предмет items | |
85 | + Click Element id=mForm:bSave | |
86 | + # More smart wait for id is needed there. | |
87 | + Sleep 25 | |
88 | + ${tender_UAid}= Get Text id=mForm:nBid | |
89 | + ${tender_UAid}= Get Substring ${tender_UAid} 19 | |
90 | + ${Ids} Convert To String ${tender_UAid} | |
91 | + Run keyword if '${mode}' == 'multi' Set Multi Ids ${tender_UAid} | |
92 | + [return] ${Ids} | |
93 | + | |
94 | +Set Multi Ids | |
95 | + [Arguments] @{ARGUMENTS} | |
96 | + [Documentation] | |
97 | + ... ${ARGUMENTS[0]} == ${tender_UAid} | |
98 | + ${id}= Get Text id=mForm:nBid | |
99 | + ${Ids} Create List ${tender_UAid} ${id} | |
100 | + | |
101 | +Додати предмет | |
102 | + [Arguments] @{ARGUMENTS} | |
103 | + [Documentation] | |
104 | + ... ${ARGUMENTS[0]} == items | |
105 | + ${dkpp_desc1}= Get From Dictionary ${items[1].additionalClassifications[0]} description | |
106 | + ${dkpp_id11}= Get From Dictionary ${items[1].additionalClassifications[0]} id | |
107 | + ${dkpp_desc2}= Get From Dictionary ${items[2].additionalClassifications[0]} description | |
108 | + ${dkpp_id2}= Get From Dictionary ${items[2].additionalClassifications[0]} id | |
109 | + ${dkpp_desc3}= Get From Dictionary ${items[3].additionalClassifications[0]} description | |
110 | + ${dkpp_id3}= Get From Dictionary ${items[3].additionalClassifications[0]} id | |
111 | + | |
112 | + Wait Until Page Contains Element xpath=//button[@class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"] 10 | |
113 | + Wait Until Page Contains Element xpath=//button[contains(@class, 'ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only')] 10 | |
114 | + Wait Until Page Contains Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] 10 | |
115 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | |
116 | + Wait Until Page Contains Element id=mForm:data:subject1 10 | |
117 | + Input text id=mForm:data:subject1 ${dkpp_desc1} | |
118 | + Input text id=mForm:data:cCpv1_input ${cpv_id} | |
119 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span 10 | |
120 | + Click Element xpath=//div[@id='mForm:data:cCpv1_panel']/table/tbody/tr/td[1]/span | |
121 | + Input text id=mForm:data:unit1_input ${code} | |
122 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1] 10 | |
123 | + Click Element xpath=//div[@id='mForm:data:unit1_panel']/table/tbody/tr/td[1] | |
124 | + Input text id=mForm:data:amount1 ${quantity} | |
125 | + Input text id=mForm:data:cDkpp1_input ${dkpp_id11} | |
126 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span 10 | |
127 | + Click Element xpath=//div[@id='mForm:data:cDkpp1_panel']/table/tbody/tr/td[1]/span | |
128 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | |
129 | + Wait Until Page Contains Element id=mForm:data:subject2 10 | |
130 | + Input text id=mForm:data:subject2 ${dkpp_desc2} | |
131 | + Input text id=mForm:data:cCpv2_input ${cpv_id} | |
132 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span 10 | |
133 | + Click Element xpath=//div[@id='mForm:data:cCpv2_panel']/table/tbody/tr/td[1]/span | |
134 | + Input text id=mForm:data:unit2_input ${code} | |
135 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1] 10 | |
136 | + Click Element xpath=//div[@id='mForm:data:unit2_panel']/table/tbody/tr/td[1] | |
137 | + Input text id=mForm:data:amount2 ${quantity} | |
138 | + Input text id=mForm:data:cDkpp2_input ${dkpp_id2} | |
139 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span 10 | |
140 | + Click Element xpath=//div[@id='mForm:data:cDkpp2_panel']/table/tbody/tr/td[1]/span | |
141 | + Click Element xpath=//button[@id="mForm:data:j_idt911"]|//button[@id="mForm:data:j_idt726"] | |
142 | + Wait Until Page Contains Element id=mForm:data:subject3 10 | |
143 | + Input text id=mForm:data:subject3 ${dkpp_desc3} | |
144 | + Input text id=mForm:data:cCpv3_input ${cpv_id} | |
145 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span 10 | |
146 | + Click Element xpath=//div[@id='mForm:data:cCpv3_panel']/table/tbody/tr/td[1]/span | |
147 | + Input text id=mForm:data:unit3_input ${code} | |
148 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1] 10 | |
149 | + Click Element xpath=//div[@id='mForm:data:unit3_panel']/table/tbody/tr/td[1] | |
150 | + Input text id=mForm:data:amount3 ${quantity} | |
151 | + Input text id=mForm:data:cDkpp3_input ${dkpp_id3} | |
152 | + Wait Until Page Contains Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span 10 | |
153 | + Click Element xpath=//div[@id='mForm:data:cDkpp3_panel']/table/tbody/tr/td[1]/span | |
14 | 154 | |
15 | 155 | Пошук тендера по ідентифікатору |
16 | 156 | [Arguments] @{ARGUMENTS} | ... | ... |
... | ... | @@ -24,5 +24,20 @@ Publicbid: |
24 | 24 | period_interval: 2 |
25 | 25 | Netcast: |
26 | 26 | keywords_file: netcast |
27 | - url: http://dz2.byustudio.in.ua | |
27 | + url: "http://dz2.byustudio.in.ua" | |
28 | + login: admin | |
29 | + password: uStudio | |
28 | 30 | timeout_on_wait: 15 |
31 | + period_interval: 2 | |
32 | +Netcast: | |
33 | + keywords_file: netcast | |
34 | + url: "http://dz2.byustudio.in.ua" | |
35 | + login: admin | |
36 | + password: uStudio | |
37 | + timeout_on_wait: 15 | |
38 | + period_interval: 2 | |
39 | +Newtend: | |
40 | + keywords_file: newtend | |
41 | + url: http://openprocurement:test@dev23.newtend.com | |
42 | + timeout_on_wait: 15 | |
43 | + period_interval: 2 | ... | ... |
... | ... | @@ -2,48 +2,129 @@ users: |
2 | 2 | Tender_Owner: |
3 | 3 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 |
4 | 4 | broker: Quinta |
5 | - Prom_Owner: | |
6 | - broker: Prom | |
7 | - username: Promtest | |
5 | + Tender_Viewer: | |
6 | + broker: Quinta | |
7 | + api_key: "" | |
8 | + Tender_User: | |
9 | + api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | |
10 | + broker: Quinta | |
11 | + Tender_User1: | |
12 | + api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | |
13 | + broker: Quinta | |
14 | + E-tender_Owner: | |
15 | + broker: E-tender | |
16 | + username: E-tendertest | |
17 | + homepage: "http://uat.e-tender.biz/#/profile" | |
18 | + login: Misha2 | |
19 | + password: Password1 | |
8 | 20 | browser: chrome |
9 | 21 | position: [0, 0] |
22 | + size: [800, 800] | |
23 | + E-tender_Provider1: | |
24 | + broker: E-tender | |
25 | + username: E-tendertest | |
26 | + homepage: "http://uat.e-tender.biz/#/profile" | |
27 | + login: st_org | |
28 | + password: 12345678 | |
29 | + browser: chrome | |
30 | + position: [700, 0] | |
31 | + size: [700, 800] | |
32 | + E-tender_Provider2: | |
33 | + broker: E-tender | |
34 | + username: E-tendertest | |
35 | + homepage: "http://uat.e-tender.biz/#/profile" | |
36 | + login: provider2 | |
37 | + password: Qa123456 | |
38 | + browser: chrome | |
39 | + position: [700, 0] | |
10 | 40 | size: [640, 450] |
11 | 41 | E-tender_Viewer: |
12 | 42 | broker: E-tender |
13 | 43 | username: E-tendertest |
44 | + homepage: "http://uat.e-tender.biz/#/profile" | |
14 | 45 | browser: chrome |
15 | 46 | position: [0, 0] |
16 | 47 | size: [640, 450] |
17 | - Prom_Viewer: | |
48 | + Netcast_Owner: | |
49 | + broker: Netcast | |
50 | + username: Netcasttest | |
51 | + homepage: "http://dz2.byustudio.in.ua" | |
52 | + login: ovramet.s@gmail.com | |
53 | + password: Password1 | |
54 | + browser: chrome | |
55 | + position: [0, 0] | |
56 | + size: [700, 800] | |
57 | + Netcast_Provider1: | |
58 | + broker: Netcast | |
59 | + username: Netcasttest | |
60 | + homepage: "http://dz2.byustudio.in.ua" | |
61 | + login: halyna.khimka@gmail.com | |
62 | + password: JHO5VUp5n | |
63 | + browser: chrome | |
64 | + position: [0, 0] | |
65 | + size: [600, 800] | |
66 | + Netcast_Viewer: | |
67 | + broker: Netcast | |
68 | + username: Netcasttest | |
69 | + homepage: "http://dz2.byustudio.in.ua" | |
70 | + browser: chrome | |
71 | + position: [0, 0] | |
72 | + size: [600, 800] | |
73 | + Newtend_Owner: | |
74 | + broker: Newtend | |
75 | + username: Newtendtest | |
76 | + homepage: "http://dev23.newtend.com/openprocurement/#/home/page/1" | |
77 | + login: openprocurement@mailinator.com | |
78 | + password: 123123 | |
79 | + browser: chrome | |
80 | + position: [0, 0] | |
81 | + size: [1200, 1200] | |
82 | + Newtend_Provider1: | |
83 | + broker: Newtend | |
84 | + username: Newtendtest | |
85 | + homepage: "http://dev23.newtend.com/openprocurement/tenders" | |
86 | + login: openprocboss@mailinator.com | |
87 | + password: 123123 | |
88 | + browser: chrome | |
89 | + position: [700, 0] | |
90 | + size: [800, 700] | |
91 | + Newtend_Viewer: | |
92 | + broker: Newtend | |
93 | + username: Newtendtest | |
94 | + homepage: "http://dev23.newtend.com/openprocurement/tenders" | |
95 | + browser: chrome | |
96 | + position: [800, 400] | |
97 | + size: [800, 700] | |
98 | + Prom_Owner: | |
18 | 99 | broker: Prom |
19 | 100 | username: Promtest |
20 | 101 | browser: chrome |
21 | - position: [640, 0] | |
102 | + position: [0, 0] | |
22 | 103 | size: [640, 450] |
23 | - SmartTender_Viewer: | |
24 | - broker: SmartTender | |
25 | - username: SmartTendertest | |
104 | + Prom_Viewer: | |
105 | + broker: Prom | |
106 | + username: Promtest | |
26 | 107 | browser: chrome |
27 | - position: [0, 450] | |
108 | + position: [640, 0] | |
28 | 109 | size: [640, 450] |
110 | + Publicbid_Owner: | |
111 | + broker: Publicbid | |
112 | + username: Publicbid | |
113 | + homepage: "https://public-bid.com.ua/test/" | |
114 | + login: yaroslav1boyko@gmail.com | |
115 | + password: Password1 | |
116 | + browser: chrome | |
117 | + position: [0, 0] | |
118 | + size: [740, 550] | |
29 | 119 | Publicbid_Viewer: |
30 | 120 | broker: Publicbid |
31 | 121 | username: Publicbid |
32 | 122 | browser: chrome |
33 | 123 | position: [0, 450] |
34 | 124 | size: [640, 450] |
35 | - Netcast_Viewer: | |
36 | - broker: Netcast | |
37 | - username: TetcastTest | |
125 | + SmartTender_Viewer: | |
126 | + broker: SmartTender | |
127 | + username: SmartTendertest | |
38 | 128 | browser: chrome |
39 | 129 | position: [0, 450] |
40 | 130 | size: [640, 450] |
41 | - Tender_Viewer: | |
42 | - broker: Quinta | |
43 | - api_key: "" | |
44 | - Tender_User: | |
45 | - api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | |
46 | - broker: Quinta | |
47 | - Tender_User1: | |
48 | - api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | |
49 | - broker: Quinta | ... | ... |
1 | +Some tesxt here | ... | ... |
1 | +from iso8601 import parse_date | |
2 | +from robot.output import LOGGER | |
3 | +from robot.output.loggerhelper import Message | |
4 | +from robot.libraries.BuiltIn import BuiltIn | |
5 | +from robot.errors import HandlerExecutionFailed | |
6 | +from datetime import datetime, timedelta, date | |
7 | +from dateutil.parser import parse | |
8 | +from dateutil.tz import tzlocal | |
9 | +from pytz import timezone | |
10 | +from jsonpath_rw import parse as parse_path | |
11 | +import time | |
12 | +from op_robot_tests.tests_files.initial_data import ( | |
13 | + test_tender_data | |
14 | +) | |
15 | + | |
16 | +TIMEZONE = timezone('Europe/Kiev') | |
17 | + | |
18 | +def convert_date_to_etender_format(isodate): | |
19 | + iso_dt=parse_date(isodate) | |
20 | + date_string = iso_dt.strftime("%d-%m-%Y") | |
21 | + return date_string | |
22 | + | |
23 | +def convert_time_to_etender_format(isodate): | |
24 | + iso_dt=parse_date(isodate) | |
25 | + time_string = iso_dt.strftime("%H:%M") | |
26 | + return time_string | ... | ... |
... | ... | @@ -19,6 +19,7 @@ from .initial_data import ( |
19 | 19 | test_bid_data, test_award_data, test_complaint_data, test_complaint_reply_data, test_tender_data_multiple_lots, |
20 | 20 | auction_bid, prom_test_tender_data, create_fake_doc |
21 | 21 | ) |
22 | +import calendar | |
22 | 23 | |
23 | 24 | |
24 | 25 | TZ = timezone(os.environ['TZ'] if 'TZ' in os.environ else 'Europe/Kiev') |
... | ... | @@ -155,3 +156,65 @@ def wait_to_date(date_stamp): |
155 | 156 | if wait_seconds < 0: |
156 | 157 | return 0 |
157 | 158 | return wait_seconds |
159 | + | |
160 | +##GUI Frontends common | |
161 | +def convert_date_to_slash_format(isodate): | |
162 | + iso_dt=parse_date(isodate) | |
163 | + date_string = iso_dt.strftime("%d/%m/%Y") | |
164 | + return date_string | |
165 | + | |
166 | +def Add_data_for_GUI_FrontEnds(INITIAL_TENDER_DATA): | |
167 | + now = datetime.now() | |
168 | + #INITIAL_TENDER_DATA.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat() | |
169 | + INITIAL_TENDER_DATA.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=6)).isoformat() | |
170 | + INITIAL_TENDER_DATA.data.tenderPeriod['startDate'] = (now + timedelta(minutes=7)).isoformat() | |
171 | + INITIAL_TENDER_DATA.data.tenderPeriod['endDate'] = (now + timedelta(minutes=11)).isoformat() | |
172 | + return INITIAL_TENDER_DATA | |
173 | + | |
174 | +def local_path_to_file(file_name): | |
175 | + path = os.getcwd() | |
176 | + path = path.split("brokers", 1)[0] + "/src/op_robot_tests/op_robot_tests/tests_files/documents/" + file_name | |
177 | + return path | |
178 | + | |
179 | +## E-Tender | |
180 | +def convert_date_to_etender_format(isodate): | |
181 | + iso_dt=parse_date(isodate) | |
182 | + date_string = iso_dt.strftime("%d-%m-%Y") | |
183 | + return date_string | |
184 | + | |
185 | +def convert_date_for_delivery(isodate): | |
186 | + iso_dt=parse_date(isodate) | |
187 | + date_string = iso_dt.strftime("%Y-%m-%d %H:%M") | |
188 | + return date_string | |
189 | + | |
190 | +def convert_time_to_etender_format(isodate): | |
191 | + iso_dt=parse_date(isodate) | |
192 | + time_string = iso_dt.strftime("%H:%M") | |
193 | + return time_string | |
194 | + | |
195 | +def procuringEntity_name(INITIAL_TENDER_DATA): | |
196 | + INITIAL_TENDER_DATA.data.procuringEntity['name'] = u"Повна назва невідомо чого" | |
197 | + return INITIAL_TENDER_DATA | |
198 | + | |
199 | +##Newtend | |
200 | +def newtend_date_picker_index(isodate): | |
201 | + now = datetime.today() | |
202 | + date_str = '01' + str(now.month) + str(now.year) | |
203 | + first_day_of_month = datetime.strptime(date_str, "%d%m%Y") | |
204 | + mod = first_day_of_month.isoweekday() - 2 | |
205 | + iso_dt=parse_date(isodate) | |
206 | + last_day_of_month = calendar.monthrange(now.year, now.month)[1] | |
207 | + #LOGGER.log_message(Message("last_day_of_month: {}".format(last_day_of_month), "INFO")) | |
208 | + if now.day>iso_dt.day: | |
209 | + mod = calendar.monthrange(now.year, now.month)[1] + mod | |
210 | + return mod + iso_dt.day | |
211 | + | |
212 | +def Update_data_for_Newtend(INITIAL_TENDER_DATA): | |
213 | + #INITIAL_TENDER_DATA.data.items[0].classification['description'] = u"Картонки" | |
214 | + INITIAL_TENDER_DATA.data.procuringEntity['name'] = u"openprocurement" | |
215 | + return INITIAL_TENDER_DATA | |
216 | + | |
217 | +def subtract_from_time(date_time,substr_min,substr_sec): | |
218 | + now = datetime.strptime(date_time,"%d.%m.%Y %H:%M") | |
219 | + now = (now - timedelta(minutes=int(substr_min), seconds = int (substr_sec) )).isoformat() | |
220 | + return now | ... | ... |
Please
register
or
login
to post a comment