Commit 6ed03b547543a0aa9437b274ff569caf9873cf45

Authored by Myroslav Opyr
2 parents 900397d6 29542551

Merge pull request #18 from selurvedu/flux_capacitor

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