Commit 8b878ac460823e347974fd3b0b29b12febe46353

Authored by selurvedu
2 parents ada0345c 9f883a43

Merge remote-tracking branch 'w-be/master'

Merging into openprocurement/robot_tests@ada0345

Conflicts:
	op_robot_tests/tests_files/brokers/openprocurement_client.robot
	op_robot_tests/tests_files/multiItemTender.robot
	op_robot_tests/tests_files/singleItemTender.robot
@@ -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}
@@ -66,15 +358,9 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -66,15 +358,9 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
66 ... ${ARGUMENTS[1]} == fieldname 358 ... ${ARGUMENTS[1]} == fieldname
67 Switch browser ${ARGUMENTS[0]} 359 Switch browser ${ARGUMENTS[0]}
68 ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]} 360 ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]}
  361 + Log ${return_value}
69 [return] ${return_value} 362 [return] ${return_value}
70 363
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 Отримати тест із поля і показати на сторінці 364 Отримати тест із поля і показати на сторінці
79 [Arguments] ${fieldname} 365 [Arguments] ${fieldname}
80 sleep 3 366 sleep 3
@@ -82,16 +368,12 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -82,16 +368,12 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
82 ${return_value}= Get Text ${locator.${fieldname}} 368 ${return_value}= Get Text ${locator.${fieldname}}
83 [return] ${return_value} 369 [return] ${return_value}
84 370
85 -отримати інформацію про tenderId  
86 - ${return_value}= Отримати тест із поля і показати на сторінці tenderId  
87 - [return] ${return_value.split(' ')[1]}  
88 -  
89 отримати інформацію про title 371 отримати інформацію про title
90 ${return_value}= Отримати тест із поля і показати на сторінці title 372 ${return_value}= Отримати тест із поля і показати на сторінці title
91 [return] ${return_value} 373 [return] ${return_value}
92 374
93 отримати інформацію про description 375 отримати інформацію про description
94 - ${return_value}= Отримати тест із поля і показати на сторінці description 376 + ${return_value}= Отримати тест із поля і показати на сторінці description
95 [return] ${return_value} 377 [return] ${return_value}
96 378
97 отримати інформацію про minimalStep.amount 379 отримати інформацію про minimalStep.amount
@@ -99,85 +381,162 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai @@ -99,85 +381,162 @@ ${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contai
99 ${return_value}= Convert To Number ${return_value.split(' ')[0]} 381 ${return_value}= Convert To Number ${return_value.split(' ')[0]}
100 [return] ${return_value} 382 [return] ${return_value}
101 383
102 -отримати інформацію про procuringEntity.name  
103 - ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name  
104 - [return] ${return_value}  
105 -  
106 -  
107 отримати інформацію про value.amount 384 отримати інформацію про value.amount
108 - ${return_value}= Отримати тест із поля і показати на сторінці value.amount 385 + ${return_value}= Отримати тест із поля і показати на сторінці value.amount
109 ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3]) 386 ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3])
110 ${return_value}= Convert To Number ${return_value} 387 ${return_value}= Convert To Number ${return_value}
111 [return] ${return_value} 388 [return] ${return_value}
112 389
  390 +Відмітити на сторінці поле з тендера
  391 + [Arguments] ${fieldname} ${locator}
  392 + ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom
  393 + Align elements horizontally ${locator} ${last_note_id}
  394 + sleep 1
  395 + Remove element ${last_note_id}
  396 +
  397 +отримати інформацію про tenderId
  398 + ${return_value}= Отримати тест із поля і показати на сторінці tenderId
  399 + ${return_value}= Get Substring ${return_value} 10
  400 + [return] ${return_value}
  401 +
  402 +отримати інформацію про procuringEntity.name
  403 + ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name
  404 + [return] ${return_value}
  405 +
113 отримати інформацію про tenderPeriod.startDate 406 отримати інформацію про tenderPeriod.startDate
114 - ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate 407 + ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate
  408 + ${return_value}= Change_date_to_month ${return_value}
115 [return] ${return_value} 409 [return] ${return_value}
116 410
117 отримати інформацію про tenderPeriod.endDate 411 отримати інформацію про tenderPeriod.endDate
118 - ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.endDate 412 + ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.endDate
  413 + ${return_value}= Change_date_to_month ${return_value}
119 [return] ${return_value} 414 [return] ${return_value}
120 415
121 отримати інформацію про enquiryPeriod.startDate 416 отримати інформацію про enquiryPeriod.startDate
122 - ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate 417 + ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate
  418 + ${return_value}= Change_date_to_month ${return_value}
123 [return] ${return_value} 419 [return] ${return_value}
124 420
125 отримати інформацію про enquiryPeriod.endDate 421 отримати інформацію про enquiryPeriod.endDate
126 - ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate 422 + ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate
  423 + ${return_value}= Change_date_to_month ${return_value}
127 [return] ${return_value} 424 [return] ${return_value}
128 425
  426 +Change_date_to_month
  427 + [Arguments] @{ARGUMENTS}
  428 + [Documentation]
  429 + ... ${ARGUMENTS[0]} == date
  430 + ${day}= Get Substring ${ARGUMENTS[0]} 0 2
  431 + ${month}= Get Substring ${ARGUMENTS[0]} 3 6
  432 + ${year}= Get Substring ${ARGUMENTS[0]} 5
  433 + ${return_value}= Convert To String ${month}${day}${year}
  434 + [return] ${return_value}
129 435
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)> 436 +отримати інформацію про items[0].description
  437 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].description
133 [return] ${return_value} 438 [return] ${return_value}
134 439
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} 440 +отримати інформацію про items[0].deliveryLocation.latitude
  441 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryLocation.latitude
  442 + ${return_value}= Get Substring ${return_value} 0 10
139 [return] ${return_value} 443 [return] ${return_value}
140 444
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)> 445 +отримати інформацію про items[0].deliveryLocation.longitude
  446 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryLocation.longitude
  447 + ${return_value}= Get Substring ${return_value} 12 22
  448 + [return] ${return_value}
  449 +
  450 +отримати інформацію про items[0].unit.code
  451 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].unit.code
  452 + ${return_value}= Get Substring ${return_value} 5
  453 + ${return_value}= Run keyword if '${return_value}' == 'кг.' Convert To String KGM
  454 + [return] ${return_value}
  455 +
  456 +отримати інформацію про items[0].quantity
  457 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].quantity
  458 + ${return_value}= Get Substring ${return_value} 0 4
  459 + ${return_value}= Convert To Number ${return_value}
  460 + [return] ${return_value}
  461 +
  462 +отримати інформацію про items[0].classification.id
  463 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].classification.id
144 [return] ${return_value.split(' ')[0]} 464 [return] ${return_value.split(' ')[0]}
145 465
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)> 466 +отримати інформацію про items[0].classification.scheme
  467 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].classification.scheme
  468 + ${return_value}= Get Substring ${return_value} 0 -1
  469 + [return] ${return_value.split(' ')[1]}
  470 +
  471 +отримати інформацію про items[0].classification.description
  472 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].classification.description
  473 + ${return_value}= Get Substring ${return_value} 11
  474 + ${return_value}= Run keyword if '${return_value}' == 'Картонки' Convert To String Cartons
  475 + [return] ${return_value}
  476 +
  477 +отримати інформацію про items[0].additionalClassifications[0].id
  478 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].id
149 [return] ${return_value.split(' ')[0]} 479 [return] ${return_value.split(' ')[0]}
150 480
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:]} 481 +отримати інформацію про items[0].additionalClassifications[0].scheme
  482 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].scheme
  483 + ${return_value}= Get Substring ${return_value} 0 -1
  484 + [return] ${return_value.split(' ')[1]}
  485 +
  486 +отримати інформацію про items[0].additionalClassifications[0].description
  487 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].additionalClassifications[0].description
  488 + ${return_value}= Get Substring ${return_value} 8 60
  489 + ${return_value}= Remove String ${return_value} "
  490 + ${return_value}= Convert To Lowercase ${return_value}
  491 + [return] ${return_value}
  492 +
  493 +отримати інформацію про items[0].deliveryAddress.postalCode
  494 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryAddress.postalCode
  495 + ${return_value}= Get Substring ${return_value} 0 5
155 [return] ${return_value} 496 [return] ${return_value}
156 497
157 -отримати інформацію про items[${item_id}].deliveryAddress  
158 - ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryAddress 498 +отримати інформацію про items[0].deliveryAddress.countryName
  499 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryAddress.countryName
  500 + ${return_value}= Get Substring ${return_value} 0 7
159 [return] ${return_value} 501 [return] ${return_value}
160 502
161 -отримати інформацію про items[${item_id}].deliveryDate  
162 - ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryDate 503 +отримати інформацію про items[0].deliveryAddress.region
  504 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryAddress.region
  505 + ${return_value}= Run keyword if '${return_value}' == 'Київська,' Convert To String м. Київ
163 [return] ${return_value} 506 [return] ${return_value}
164 507
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)> 508 +отримати інформацію про items[0].deliveryAddress.locality
  509 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryAddress.locality
  510 + ${return_value}= Run keyword if '${return_value}' == 'Київ,' Convert To String м. Київ
168 [return] ${return_value} 511 [return] ${return_value}
169 512
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)> 513 +отримати інформацію про items[0].deliveryAddress.streetAddress
  514 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryAddress.streetAddress
173 [return] ${return_value} 515 [return] ${return_value}
174 516
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)> 517 +отримати інформацію про items[0].deliveryDate.endDate
  518 + ${return_value}= Отримати тест із поля і показати на сторінці items[0].deliveryDate.endDate
  519 + ${time}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate
  520 + ${time}= Get Substring ${time} 11
  521 + ${day}= Get Substring ${return_value} 16 18
  522 + ${month}= Get Substring ${return_value} 18 22
  523 + ${year}= Get Substring ${return_value} 22
  524 + ${return_value}= Convert To String ${year}${month}${day}${time}
178 [return] ${return_value} 525 [return] ${return_value}
179 526
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>  
183 - [return] ${return_value}  
  527 +отримати інформацію про questions[0].title
  528 + ${return_value}= отримати тест із поля і показати на сторінці questions[0].title
  529 + [return] ${return_value}
  530 +
  531 +отримати інформацію про questions[0].description
  532 + ${return_value}= отримати тест із поля і показати на сторінці questions[0].description
  533 + [return] ${return_value}
  534 +
  535 +отримати інформацію про questions[0].date
  536 + ${return_value}= отримати тест із поля і показати на сторінці questions[0].date
  537 + ${return_value}= Change_date_to_month ${return_value}
  538 + [return] ${return_value}
  539 +
  540 +отримати інформацію про questions[0].answer
  541 + ${return_value}= отримати тест із поля і показати на сторінці questions[0].answer
  542 + [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 timout_on_wait: 15 30 timout_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 + timout_on_wait: 15
  38 + period_interval: 2
  39 +Newtend:
  40 + keywords_file: newtend
  41 + url: http://openprocurement:test@dev23.newtend.com
  42 + timout_on_wait: 15
  43 + period_interval: 2
@@ -2,49 +2,129 @@ users: @@ -2,49 +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]  
35 - Netcast_Viewer:  
36 - broker: Netcast  
37 - username: TetcastTest 124 + size: [640, 450]
  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]  
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  
50 -  
  130 + size: [640, 450]
  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 TIMEZONE = timezone('Europe/Kiev') 24 TIMEZONE = timezone('Europe/Kiev')
24 25
@@ -151,4 +152,66 @@ def wait_to_date(date_stamp): @@ -151,4 +152,66 @@ def wait_to_date(date_stamp):
151 wait_seconds += 2 152 wait_seconds += 2
152 if wait_seconds < 0: 153 if wait_seconds < 0:
153 return 0 154 return 0
154 - return wait_seconds  
  155 + return wait_seconds
  156 +
  157 +##GUI Frontends common
  158 +def convert_date_to_slash_format(isodate):
  159 + iso_dt=parse_date(isodate)
  160 + date_string = iso_dt.strftime("%d/%m/%Y")
  161 + return date_string
  162 +
  163 +def Add_data_for_GUI_FrontEnds(INITIAL_TENDER_DATA):
  164 + now = datetime.now()
  165 + #INITIAL_TENDER_DATA.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat()
  166 + INITIAL_TENDER_DATA.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=6)).isoformat()
  167 + INITIAL_TENDER_DATA.data.tenderPeriod['startDate'] = (now + timedelta(minutes=7)).isoformat()
  168 + INITIAL_TENDER_DATA.data.tenderPeriod['endDate'] = (now + timedelta(minutes=11)).isoformat()
  169 + return INITIAL_TENDER_DATA
  170 +
  171 +def local_path_to_file(file_name):
  172 + path = os.getcwd()
  173 + path = path.split("brokers", 1)[0] + "/src/op_robot_tests/op_robot_tests/tests_files/documents/" + file_name
  174 + return path
  175 +
  176 +## E-Tender
  177 +def convert_date_to_etender_format(isodate):
  178 + iso_dt=parse_date(isodate)
  179 + date_string = iso_dt.strftime("%d-%m-%Y")
  180 + return date_string
  181 +
  182 +def convert_date_for_delivery(isodate):
  183 + iso_dt=parse_date(isodate)
  184 + date_string = iso_dt.strftime("%Y-%m-%d %H:%M")
  185 + return date_string
  186 +
  187 +def convert_time_to_etender_format(isodate):
  188 + iso_dt=parse_date(isodate)
  189 + time_string = iso_dt.strftime("%H:%M")
  190 + return time_string
  191 +
  192 +def procuringEntity_name(INITIAL_TENDER_DATA):
  193 + INITIAL_TENDER_DATA.data.procuringEntity['name'] = u"Повна назва невідомо чого"
  194 + return INITIAL_TENDER_DATA
  195 +
  196 +##Newtend
  197 +def newtend_date_picker_index(isodate):
  198 + now = datetime.today()
  199 + date_str = '01' + str(now.month) + str(now.year)
  200 + first_day_of_month = datetime.strptime(date_str, "%d%m%Y")
  201 + mod = first_day_of_month.isoweekday() - 2
  202 + iso_dt=parse_date(isodate)
  203 + last_day_of_month = calendar.monthrange(now.year, now.month)[1]
  204 + #LOGGER.log_message(Message("last_day_of_month: {}".format(last_day_of_month), "INFO"))
  205 + if now.day>iso_dt.day:
  206 + mod = calendar.monthrange(now.year, now.month)[1] + mod
  207 + return mod + iso_dt.day
  208 +
  209 +def Update_data_for_Newtend(INITIAL_TENDER_DATA):
  210 + #INITIAL_TENDER_DATA.data.items[0].classification['description'] = u"Картонки"
  211 + INITIAL_TENDER_DATA.data.procuringEntity['name'] = u"openprocurement"
  212 + return INITIAL_TENDER_DATA
  213 +
  214 +def subtract_from_time(date_time,substr_min,substr_sec):
  215 + now = datetime.strptime(date_time,"%d.%m.%Y %H:%M")
  216 + now = (now - timedelta(minutes=int(substr_min), seconds = int (substr_sec) )).isoformat()
  217 + return now
Please register or login to post a comment