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,60 +4,352 @@ Library String | ||
4 | Library DateTime | 4 | Library DateTime |
5 | 5 | ||
6 | *** Variables *** | 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 | *** Keywords *** | 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 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | 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 | [Arguments] @{ARGUMENTS} | 191 | [Arguments] @{ARGUMENTS} |
29 | [Documentation] | 192 | [Documentation] |
30 | ... ${ARGUMENTS[0]} == username | 193 | ... ${ARGUMENTS[0]} == username |
31 | - ... ${ARGUMENTS[1]} == tenderId | ||
32 | - ... ${ARGUMENTS[2]} == id | 194 | + ... ${ARGUMENTS[1]} == ${TENDER_UAID} |
33 | Switch browser ${ARGUMENTS[0]} | 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 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} | 196 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} |
37 | - Wait Until Page Contains E-TENDER - центр електронної торгівлі 10 | 197 | + Wait Until Page Contains Список закупівель 10 |
38 | sleep 1 | 198 | sleep 1 |
39 | Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]} | 199 | Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]} |
40 | Click Link jquery=a[ng-click='search()'] | 200 | Click Link jquery=a[ng-click='search()'] |
41 | sleep 2 | 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 | Click Link jquery=a[href^="#/tenderDetailes"] | 202 | Click Link jquery=a[href^="#/tenderDetailes"] |
46 | Wait Until Page Contains ${ARGUMENTS[1]} 10 | 203 | Wait Until Page Contains ${ARGUMENTS[1]} 10 |
47 | sleep 1 | 204 | sleep 1 |
48 | Capture Page Screenshot | 205 | Capture Page Screenshot |
49 | 206 | ||
50 | -Оновити сторінку з тендером | 207 | +Завантажити документ |
51 | [Arguments] @{ARGUMENTS} | 208 | [Arguments] @{ARGUMENTS} |
52 | [Documentation] | 209 | [Documentation] |
53 | ... ${ARGUMENTS[0]} == username | 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 | [Arguments] @{ARGUMENTS} | 355 | [Arguments] @{ARGUMENTS} |
@@ -68,13 +360,6 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai | @@ -68,13 +360,6 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai | ||
68 | ${return_value}= run keyword Отримати інформацію про ${ARGUMENTS[1]} | 360 | ${return_value}= run keyword Отримати інформацію про ${ARGUMENTS[1]} |
69 | [return] ${return_value} | 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 | [Arguments] ${fieldname} | 364 | [Arguments] ${fieldname} |
80 | sleep 3 | 365 | sleep 3 |
@@ -82,16 +367,12 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai | @@ -82,16 +367,12 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai | ||
82 | ${return_value}= Get Text ${locator.${fieldname}} | 367 | ${return_value}= Get Text ${locator.${fieldname}} |
83 | [return] ${return_value} | 368 | [return] ${return_value} |
84 | 369 | ||
85 | -Отримати інформацію про tenderId | ||
86 | - ${return_value}= Отримати тест із поля і показати на сторінці tenderId | ||
87 | - [return] ${return_value.split(' ')[1]} | ||
88 | - | ||
89 | Отримати інформацію про title | 370 | Отримати інформацію про title |
90 | ${return_value}= Отримати тест із поля і показати на сторінці title | 371 | ${return_value}= Отримати тест із поля і показати на сторінці title |
91 | [return] ${return_value} | 372 | [return] ${return_value} |
92 | 373 | ||
93 | Отримати інформацію про description | 374 | Отримати інформацію про description |
94 | - ${return_value}= Отримати тест із поля і показати на сторінці description | 375 | + ${return_value}= Отримати тест із поля і показати на сторінці description |
95 | [return] ${return_value} | 376 | [return] ${return_value} |
96 | 377 | ||
97 | Отримати інформацію про minimalStep.amount | 378 | Отримати інформацію про minimalStep.amount |
@@ -99,85 +380,162 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai | @@ -99,85 +380,162 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai | ||
99 | ${return_value}= Convert To Number ${return_value.split(' ')[0]} | 380 | ${return_value}= Convert To Number ${return_value.split(' ')[0]} |
100 | [return] ${return_value} | 381 | [return] ${return_value} |
101 | 382 | ||
102 | -Отримати інформацію про procuringEntity.name | ||
103 | - ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name | ||
104 | - [return] ${return_value} | ||
105 | - | ||
106 | - | ||
107 | Отримати інформацію про value.amount | 383 | Отримати інформацію про value.amount |
108 | ${return_value}= Отримати тест із поля і показати на сторінці value.amount | 384 | ${return_value}= Отримати тест із поля і показати на сторінці value.amount |
109 | ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3]) | 385 | ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3]) |
110 | ${return_value}= Convert To Number ${return_value} | 386 | ${return_value}= Convert To Number ${return_value} |
111 | [return] ${return_value} | 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 | Отримати інформацію про tenderPeriod.startDate | 405 | Отримати інформацію про tenderPeriod.startDate |
114 | ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate | 406 | ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate |
407 | + ${return_value}= Change_date_to_month ${return_value} | ||
115 | [return] ${return_value} | 408 | [return] ${return_value} |
116 | 409 | ||
117 | Отримати інформацію про tenderPeriod.endDate | 410 | Отримати інформацію про tenderPeriod.endDate |
118 | ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.endDate | 411 | ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.endDate |
412 | + ${return_value}= Change_date_to_month ${return_value} | ||
119 | [return] ${return_value} | 413 | [return] ${return_value} |
120 | 414 | ||
121 | Отримати інформацію про enquiryPeriod.startDate | 415 | Отримати інформацію про enquiryPeriod.startDate |
122 | ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate | 416 | ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate |
417 | + ${return_value}= Change_date_to_month ${return_value} | ||
123 | [return] ${return_value} | 418 | [return] ${return_value} |
124 | 419 | ||
125 | Отримати інформацію про enquiryPeriod.endDate | 420 | Отримати інформацію про enquiryPeriod.endDate |
126 | ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate | 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 | [return] ${return_value} | 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 | [return] ${return_value} | 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 | [return] ${return_value} | 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 | [return] ${return_value.split(' ')[0]} | 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 | [return] ${return_value.split(' ')[0]} | 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 | [return] ${return_value} | 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 | [return] ${return_value} | 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 | [return] ${return_value} | 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 | [return] ${return_value} | 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 | [return] ${return_value} | 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 | [return] ${return_value} | 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 | [return] ${return_value} | 541 | [return] ${return_value} |
@@ -4,46 +4,500 @@ Library String | @@ -4,46 +4,500 @@ Library String | ||
4 | Library DateTime | 4 | Library DateTime |
5 | 5 | ||
6 | *** Variables *** | 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 | *** Keywords *** | 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 | [Arguments] @{ARGUMENTS} | 227 | [Arguments] @{ARGUMENTS} |
30 | [Documentation] | 228 | [Documentation] |
31 | ... ${ARGUMENTS[0]} == username | 229 | ... ${ARGUMENTS[0]} == username |
32 | ... ${ARGUMENTS[1]} == tenderId | 230 | ... ${ARGUMENTS[1]} == tenderId |
33 | - ... ${ARGUMENTS[2]} == id | ||
34 | Switch browser ${ARGUMENTS[0]} | 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 | Go to ${BROKERS['${USERS.users['${username}'].broker}'].url} | 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 | sleep 1 | 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 | sleep 1 | 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 | sleep 1 | 298 | sleep 1 |
49 | - Capture Page Screenshot | ||
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,14 +3,154 @@ Library Selenium2Screenshots | ||
3 | Library String | 3 | Library String |
4 | Library DateTime | 4 | Library DateTime |
5 | 5 | ||
6 | +*** Variables *** | ||
7 | +${mail} test@mail.com | ||
8 | +${telephone} +380976535447 | ||
9 | + | ||
10 | + | ||
6 | *** Keywords *** | 11 | *** Keywords *** |
7 | Підготувати клієнт для користувача | 12 | Підготувати клієнт для користувача |
8 | - [Arguments] ${username} | 13 | + [Arguments] @{ARGUMENTS} |
9 | [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо | 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 | [Arguments] @{ARGUMENTS} | 156 | [Arguments] @{ARGUMENTS} |
@@ -24,5 +24,20 @@ Publicbid: | @@ -24,5 +24,20 @@ Publicbid: | ||
24 | period_interval: 2 | 24 | period_interval: 2 |
25 | Netcast: | 25 | Netcast: |
26 | keywords_file: netcast | 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 | timeout_on_wait: 15 | 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,48 +2,129 @@ users: | ||
2 | Tender_Owner: | 2 | Tender_Owner: |
3 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 | 3 | api_key: e9c3ccb8e8124f26941d5f9639a4ebc3 |
4 | broker: Quinta | 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 | browser: chrome | 20 | browser: chrome |
9 | position: [0, 0] | 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 | size: [640, 450] | 40 | size: [640, 450] |
11 | E-tender_Viewer: | 41 | E-tender_Viewer: |
12 | broker: E-tender | 42 | broker: E-tender |
13 | username: E-tendertest | 43 | username: E-tendertest |
44 | + homepage: "http://uat.e-tender.biz/#/profile" | ||
14 | browser: chrome | 45 | browser: chrome |
15 | position: [0, 0] | 46 | position: [0, 0] |
16 | size: [640, 450] | 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 | broker: Prom | 99 | broker: Prom |
19 | username: Promtest | 100 | username: Promtest |
20 | browser: chrome | 101 | browser: chrome |
21 | - position: [640, 0] | 102 | + position: [0, 0] |
22 | size: [640, 450] | 103 | size: [640, 450] |
23 | - SmartTender_Viewer: | ||
24 | - broker: SmartTender | ||
25 | - username: SmartTendertest | 104 | + Prom_Viewer: |
105 | + broker: Prom | ||
106 | + username: Promtest | ||
26 | browser: chrome | 107 | browser: chrome |
27 | - position: [0, 450] | 108 | + position: [640, 0] |
28 | size: [640, 450] | 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 | Publicbid_Viewer: | 119 | Publicbid_Viewer: |
30 | broker: Publicbid | 120 | broker: Publicbid |
31 | username: Publicbid | 121 | username: Publicbid |
32 | browser: chrome | 122 | browser: chrome |
33 | position: [0, 450] | 123 | position: [0, 450] |
34 | size: [640, 450] | 124 | size: [640, 450] |
35 | - Netcast_Viewer: | ||
36 | - broker: Netcast | ||
37 | - username: TetcastTest | 125 | + SmartTender_Viewer: |
126 | + broker: SmartTender | ||
127 | + username: SmartTendertest | ||
38 | browser: chrome | 128 | browser: chrome |
39 | position: [0, 450] | 129 | position: [0, 450] |
40 | size: [640, 450] | 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,6 +19,7 @@ from .initial_data import ( | ||
19 | test_bid_data, test_award_data, test_complaint_data, test_complaint_reply_data, test_tender_data_multiple_lots, | 19 | test_bid_data, test_award_data, test_complaint_data, test_complaint_reply_data, test_tender_data_multiple_lots, |
20 | auction_bid, prom_test_tender_data, create_fake_doc | 20 | auction_bid, prom_test_tender_data, create_fake_doc |
21 | ) | 21 | ) |
22 | +import calendar | ||
22 | 23 | ||
23 | 24 | ||
24 | TZ = timezone(os.environ['TZ'] if 'TZ' in os.environ else 'Europe/Kiev') | 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,3 +156,65 @@ def wait_to_date(date_stamp): | ||
155 | if wait_seconds < 0: | 156 | if wait_seconds < 0: |
156 | return 0 | 157 | return 0 |
157 | return wait_seconds | 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