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