Commit b3fedd3e5ac54107d83a97a7da0e8a18b9c00ef2

Authored by biviktorqc
1 parent 67330b5b

saving changes

  1 +*** Setting ***
  2 +Library Selenium2Screenshots
  3 +Library String
  4 +Library DateTime
  5 +
  6 +
  7 +*** Variables ***
  8 +${locator.tenderId} jquery=h3
  9 +${locator.title} jquery=tender-subject-info>div.row:contains("Назва закупівлі:")>:eq(1)>
  10 +${locator.description} jquery=tender-subject-info>div.row:contains("Детальний опис закупівлі:")>:eq(1)>
  11 +${locator.minimalStep.amount} jquery=tender-subject-info>div.row:contains("Мінімальний крок аукціону, грн.:")>:eq(1)>
  12 +${locator.procuringEntity.name} jquery=customer-info>div.row:contains("Найменування:")>:eq(1)>
  13 +${locator.value.amount} jquery=tender-subject-info>div.row:contains("Повний доступний бюджет закупівлі, грн.:")>:eq(1)>
  14 +${locator.tenderPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок прийому пропозицій:")>:eq(1)>
  15 +${locator.tenderPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення прийому пропозицій:")>:eq(1)>
  16 +${locator.enquiryPeriod.startDate} jquery=tender-procedure-info>div.row:contains("Початок періоду уточнень:")>:eq(1)>
  17 +${locator.enquiryPeriod.endDate} jquery=tender-procedure-info>div.row:contains("Завершення періоду уточнень:")>:eq(1)>
  18 +
  19 +*** Keywords ***
  20 +Підготувати дані для оголошення тендера
  21 + ${INITIAL_TENDER_DATA}= prepare_test_tender_data
  22 + [return] ${INITIAL_TENDER_DATA}
  23 +
  24 +Підготувати клієнт для користувача
  25 + [Arguments] @{ARGUMENTS}
  26 + [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо
  27 + ... ${ARGUMENTS[0]} == username
  28 + Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} alias=${ARGUMENTS[0]}
  29 + Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size}
  30 + Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position}
  31 +
  32 +# login
  33 + Wait Until Page Contains Element id=inputUsername 100
  34 + Input text id=inputUsername ${USERS.users['${username}'].login}
  35 + Input text id=inputPassword ${USERS.users['${username}'].password}
  36 + Click Button id=btn_submit
  37 +
  38 +Створити тендер
  39 + [Arguments] @{ARGUMENTS}
  40 + [Documentation]
  41 + ... ${ARGUMENTS[0]} == username
  42 + ... ${ARGUMENTS[1]} == tender_data
  43 +
  44 + ${items}= Get From Dictionary ${ARGUMENTS[1].data} items
  45 + ${title}= Get From Dictionary ${ARGUMENTS[1].data} title
  46 + ${description}= Get From Dictionary ${ARGUMENTS[1].data} description
  47 + ${budget}= Get From Dictionary ${ARGUMENTS[1].data.value} amount
  48 + ${step_rate}= Get From Dictionary ${ARGUMENTS[1].data.minimalStep} amount
  49 + ${items_description}= Get From Dictionary ${ARGUMENTS[1].data} description
  50 + ${quantity}= Get From Dictionary ${items[0]} quantity
  51 + ${cpv}= Get From Dictionary ${items[0].classification} id
  52 + ${dkpp_desc}= Get From Dictionary ${items[0].additionalClassifications[0]} description
  53 + ${dkpp_id}= Get From Dictionary ${items[0].additionalClassifications[0]} id
  54 + ${unit}= Get From Dictionary ${items[0].unit} name
  55 + ${start_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate
  56 + ${start_date}= convert_date_to_etender_format ${start_date}
  57 + ${start_time}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} startDate
  58 + ${start_time}= convert_time_to_etender_format ${start_time}
  59 + ${end_date}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate
  60 + ${end_date}= convert_date_to_etender_format ${end_date}
  61 + ${end_time}= Get From Dictionary ${ARGUMENTS[1].data.tenderPeriod} endDate
  62 + ${end_time}= convert_time_to_etender_format ${end_time}
  63 + ${enquiry_end_date}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate
  64 + ${enquiry_end_date}= convert_date_to_etender_format ${enquiry_end_date}
  65 + ${enquiry_end_time}= Get From Dictionary ${ARGUMENTS[1].data.enquiryPeriod} endDate
  66 + ${enquiry_end_time}= convert_time_to_etender_format ${enquiry_end_time}
  67 +
  68 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  69 + Wait Until Page Contains Мої закупівлі 100
  70 + Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі']
  71 + Wait Until Page Contains Element xpath=//a[contains(@class, 'btn btn-info')]
  72 + Click Element xpath=//a[contains(@class, 'btn btn-info')]
  73 + Wait Until Page Contains Element id=title
  74 + Input text id=title ${title}
  75 + Input text id=description ${description}
  76 + Input text id=value ${budget}
  77 + Click Element xpath=//div[contains(@class, 'form-group col-sm-6')]//input[@type='checkbox']
  78 + Input text id=minimalStep ${step_rate}
  79 + Input text id=itemsDescription ${items_description}
  80 + Input text id=itemsQuantity ${quantity}
  81 + Click Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram']
  82 + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='enqPEndDate'] ${enquiry_end_date}
  83 + 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}
  84 +
  85 + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='startDate'] ${start_date}
  86 + 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}
  87 + Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='endDate'] ${end_date}
  88 + 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}
  89 +
  90 + Click Element xpath=//div[contains(@class, 'col-sm-2')]//input[@data-target='#classification']
  91 + Wait Until Page Contains Оберіть класифікатор CPV 100
  92 + Input text xpath=//div[contains(@class, 'modal-content')]//input[@ng-model='searchstring'] ${cpv}
  93 + Wait Until Page Contains Картонки 100
  94 + Click Element xpath=//table[contains(@class, 'table table-hover table-striped table-bordered ng-table-rowselected ng-scope ng-table')]//tr[1]//td[1]
  95 + Wait Until Page Contains 44617100-9 Картонки 100
  96 + Click Element xpath=//div[contains(@class, 'modal-content')]//button[@ng-click='choose()']
  97 +
  98 + Click Element xpath=//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification']
  99 + Wait Until Page Contains Класифікатор ДКПП 100
  100 + Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc}
  101 + Wait Until Page Contains ${dkpp_id} 100
  102 + Click Element xpath=//table[contains(@class, 'table table-hover table-striped table-bordered ng-table-rowselected ng-scope ng-table')]//tr[2]//td[1]
  103 + Wait Until Page Contains 17.21.1 "Папір і картон гофровані, паперова й картонна тара" 100
  104 + Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()']
  105 + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']
  106 + Wait Until Page Contains [ТЕСТУВАННЯ] 100
  107 + Click Element xpath=//table[contains(@class, 'table table-hover table-striped table-bordered ng-scope ng-table')]//tr[1]//a
  108 + ${tender_UAid}= Wait Until Keyword Succeeds 240sec 2sec get tender UAid
  109 +### harcode Idis bacause issues on the E-tender side, to remove, 1 line:
  110 + ${tender_UAid}= Convert To String UA-2015-06-30-000012
  111 + ${Ids} Create List ${tender_UAid}
  112 + [return] ${Ids}
  113 +
  114 +get tender UAid
  115 + ${tender_UAid}= Get Text xpath=//div[contains(@class, "panel-heading")]
  116 + ${tender_UAid}= Get Substring ${tender_UAid} 7 27
  117 + [return] ${tender_UAid}
  118 +
  119 +Oтримати internal id по UAid
  120 + [Arguments] @{ARGUMENTS}
  121 + [Documentation]
  122 + ... ${ARGUMENTS[0]} == username
  123 + ... ${ARGUMENTS[1]} == tenderid
  124 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  125 + ${current_location}= Get Location
  126 + ${tender_id}= Fetch From Right ${current_location} /
  127 +### harcode Idis bacause issues on the E-tender side, to remove, 1 line:
  128 + ${tender_id}= Convert To String 94ffe180019d459787aafe290cd300e2
  129 + log ${internal_id}
  130 + [return] ${internal_id}
  131 +
  132 +Пошук тендера по ідентифікатору
  133 + [Arguments] @{ARGUMENTS}
  134 + [Documentation]
  135 + ... ${ARGUMENTS[0]} == username
  136 + ... ${ARGUMENTS[1]} == tenderId
  137 +
  138 + Switch browser ${ARGUMENTS[0]}
  139 + Go to ${BROKERS['${USERS.users['${username}'].broker}'].url}
  140 + Wait Until Page Contains Список закупівель 10
  141 + sleep 1
  142 + Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]}
  143 + Click Link jquery=a[ng-click='search()']
  144 + sleep 2
  145 + Click Link jquery=a[href^="#/tenderDetailes"]
  146 + Wait Until Page Contains ${ARGUMENTS[1]} 10
  147 + sleep 1
  148 + Capture Page Screenshot
  149 +
  150 +обновити сторінку з тендером
  151 + [Arguments] @{ARGUMENTS}
  152 + [Documentation]
  153 + ... ${ARGUMENTS[0]} == username
  154 + ... ${ARGUMENTS[1]} == tenderId
  155 + ... ${ARGUMENTS[2]} == id
  156 + ${current_location}= Get Location
  157 + Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page
  158 + Run keyword unless '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Пошук тендера по ідентифікатору @{ARGUMENTS}
  159 + Wait Until Page Contains ${ARGUMENTS[1]} 10
  160 + sleep 1
  161 +
  162 +отримати інформацію із тендера
  163 + [Arguments] @{ARGUMENTS}
  164 + [Documentation]
  165 + ... ${ARGUMENTS[0]} == username
  166 + ... ${ARGUMENTS[1]} == fieldname
  167 + Switch browser ${ARGUMENTS[0]}
  168 + ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]}
  169 + [return] ${return_value}
  170 +
  171 +Відмітити на сторінці поле з тендера
  172 + [Arguments] ${fieldname} ${locator}
  173 + ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom
  174 + Align elements horizontally ${locator} ${last_note_id}
  175 + sleep 1
  176 + Remove element ${last_note_id}
  177 +
  178 +Отримати тест із поля і показати на сторінці
  179 + [Arguments] ${fieldname}
  180 + sleep 3
  181 +# відмітити на сторінці поле з тендера ${fieldname} ${locator.${fieldname}}
  182 + ${return_value}= Get Text ${locator.${fieldname}}
  183 + [return] ${return_value}
  184 +
  185 +отримати інформацію про tenderId
  186 + ${return_value}= Отримати тест із поля і показати на сторінці tenderId
  187 + [return] ${return_value.split(' ')[1]}
  188 +
  189 +отримати інформацію про title
  190 + ${return_value}= Отримати тест із поля і показати на сторінці title
  191 + [return] ${return_value}
  192 +
  193 +отримати інформацію про description
  194 + ${return_value}= Отримати тест із поля і показати на сторінці description
  195 + [return] ${return_value}
  196 +
  197 +отримати інформацію про minimalStep.amount
  198 + ${return_value}= Отримати тест із поля і показати на сторінці minimalStep.amount
  199 + ${return_value}= Convert To Number ${return_value.split(' ')[0]}
  200 + [return] ${return_value}
  201 +
  202 +отримати інформацію про procuringEntity.name
  203 + ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name
  204 + [return] ${return_value}
  205 +
  206 +
  207 +отримати інформацію про value.amount
  208 + ${return_value}= Отримати тест із поля і показати на сторінці value.amount
  209 + ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3])
  210 + ${return_value}= Convert To Number ${return_value}
  211 + [return] ${return_value}
  212 +
  213 +отримати інформацію про tenderPeriod.startDate
  214 + ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate
  215 + [return] ${return_value}
  216 +
  217 +отримати інформацію про tenderPeriod.endDate
  218 + ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.endDate
  219 + [return] ${return_value}
  220 +
  221 +отримати інформацію про enquiryPeriod.startDate
  222 + ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate
  223 + [return] ${return_value}
  224 +
  225 +отримати інформацію про enquiryPeriod.endDate
  226 + ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate
  227 + [return] ${return_value}
  228 +
  229 +
  230 +отримати інформацію про items[${item_id}].description
  231 + відмітити на сторінці поле з тендера items[${item_id}].description jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)>
  232 + ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)>
  233 + [return] ${return_value}
  234 +
  235 +отримати інформацію про items[${item_id}].quantity
  236 + відмітити на сторінці поле з тендера items[${item_id}].quantity jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Кількість:")>:eq(1)>
  237 + ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Кількість:")>:eq(1)>
  238 + ${return_value}= Convert To Number ${return_value}
  239 + [return] ${return_value}
  240 +
  241 +отримати інформацію про items[${item_id}].classification.id
  242 + відмітити на сторінці поле з тендера items[0].classification.id jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)>
  243 + ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)>
  244 + [return] ${return_value.split(' ')[0]}
  245 +
  246 +отримати інформацію про items[${item_id}].classification.scheme
  247 + відмітити на сторінці поле з тендера items[0].classification.id jquery=tender-subject-info>div.row:contains("CPV")>:eq(1)>
  248 + ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("CPV")>:eq(1)>
  249 + [return] ${return_value.split(' ')[0]}
  250 +
  251 +отримати інформацію про items[${item_id}].classification.description
  252 + відмітити на сторінці поле з тендера classification.description jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)>
  253 + ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)>
  254 + ${return_value}= catenate @{return_value.split(' ')[1:]}
  255 + [return] ${return_value}
  256 +
  257 +отримати інформацію про items[${item_id}].deliveryAddress
  258 + ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryAddress
  259 + [return] ${return_value}
  260 +
  261 +отримати інформацію про items[${item_id}].deliveryDate
  262 + ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryDate
  263 + [return] ${return_value}
  264 +
  265 +отримати інформацію про questions[${question_id}].title
  266 + відмітити на сторінці поле з тендера questions title jquery=tender-questions>div:eq(1)>div.row:contains("Тема:")>:eq(1)>
  267 + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Тема:")>:eq(1)>
  268 + [return] ${return_value}
  269 +
  270 +отримати інформацію про questions[${question_id}].description
  271 + відмітити на сторінці поле з тендера questions description jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)>
  272 + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)>
  273 + [return] ${return_value}
  274 +
  275 +отримати інформацію про questions[${question_id}].date
  276 + відмітити на сторінці поле з тендера question date jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)>
  277 + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)>
  278 + [return] ${return_value}
  279 +
  280 +отримати інформацію про questions[${question_id}].answer
  281 + відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last>
  282 + ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last>
  283 + [return] ${return_value}
  284 +
  285 +Подати цінову пропозицію
  286 + [Arguments] @{ARGUMENTS}
  287 + [Documentation]
  288 + ... ${ARGUMENTS[0]} == username
  289 + ... ${ARGUMENTS[1]} == ${INTERNAL_TENDER_ID}
  290 + ... ${ARGUMENTS[2]} == test_bid_data
  291 +
  292 + ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount
  293 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  294 + Wait Until Page Contains Інформація про процедуру закупівлі 100
  295 + Wait Until Page Contains Element id=amount 10
  296 + Input text id=amount ${bid}
  297 + Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції']
  298 +
  299 +Задати питання
  300 + [Arguments] @{ARGUMENTS}
  301 + [Documentation]
  302 + ... ${ARGUMENTS[0]} = username
  303 + ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID}
  304 + ... ${ARGUMENTS[2]} = question_data
  305 +
  306 + ${title}= Get From Dictionary ${ARGUMENTS[2].data} title
  307 + ${description}= Get From Dictionary ${ARGUMENTS[2].data} description
  308 +
  309 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  310 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID}
  311 +
  312 + Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100
  313 + Click Element jquery=a[href^="#/addQuestion/"]
  314 + Wait Until Page Contains Element id=title
  315 + Input text id=title ${title}
  316 + Input text id=description ${description}
  317 + Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']
  318 +
  319 +Відповісти на питання
  320 + [Arguments] @{ARGUMENTS}
  321 + [Documentation]
  322 + ... ${ARGUMENTS[0]} = username
  323 + ... ${ARGUMENTS[1]} = ${INTERNAL_TENDER_ID}
  324 + ... ${ARGUMENTS[2]} = 0
  325 + ... ${ARGUMENTS[3]} = answer_data
  326 +
  327 + ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer
  328 +
  329 + Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  330 + etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]} ${TENDER_ID}
  331 +
  332 + Click Element xpath=//div[div/pre[1]]/div[1]
  333 + Input text xpath=//div[textarea]/textarea ${answer}
  334 + Click Element xpath=//div[textarea]/span/button[1]
@@ -26,3 +26,9 @@ Netcast: @@ -26,3 +26,9 @@ Netcast:
26 keywords_file: netcast 26 keywords_file: netcast
27 url: http://dz2.byustudio.in.ua 27 url: http://dz2.byustudio.in.ua
28 timout_on_wait: 15 28 timout_on_wait: 15
  29 +Newtend:
  30 + keywords_file: newtend
  31 + url: http://dev23.newtend.com/
  32 + aut_login: openprocurement
  33 + aut_pass: test
  34 + timout_on_wait: 15
@@ -27,7 +27,7 @@ users: @@ -27,7 +27,7 @@ users:
27 login: st_org 27 login: st_org
28 password: 12345678 28 password: 12345678
29 browser: firefox 29 browser: firefox
30 - position: [0, 0] 30 + position: [700, 0]
31 size: [640, 450] 31 size: [640, 450]
32 E-tender_Provider2: 32 E-tender_Provider2:
33 broker: E-tender 33 broker: E-tender
@@ -41,7 +41,7 @@ users: @@ -41,7 +41,7 @@ users:
41 E-tender_Viewer: 41 E-tender_Viewer:
42 broker: E-tender 42 broker: E-tender
43 username: E-tendertest 43 username: E-tendertest
44 - browser: chrome 44 + browser: firefox
45 position: [0, 0] 45 position: [0, 0]
46 size: [640, 450] 46 size: [640, 450]
47 Prom_Owner: 47 Prom_Owner:
@@ -74,3 +74,36 @@ users: @@ -74,3 +74,36 @@ users:
74 browser: chrome 74 browser: chrome
75 position: [0, 450] 75 position: [0, 450]
76 size: [640, 450] 76 size: [640, 450]
  77 + Newtend_Owner:
  78 + broker: Newtend
  79 + username: Newtendtest
  80 + homepage: "http://dev23.newtend.com/openprocurement/#/home/page/1"
  81 + login: openprocurement@mailinator.com
  82 + password: 123123
  83 + browser: firefox
  84 + position: [0, 0]
  85 + size: [640, 450]
  86 + Newtend_Provider1:
  87 + broker: Newtend
  88 + username: Newtendtest
  89 + homepage: "http://dev23.newtend.com/openprocurement/tenders"
  90 + login: qtest@mailinator.com
  91 + password: 123123
  92 + browser: firefox
  93 + position: [700, 0]
  94 + size: [640, 450]
  95 + Newtend_Provider2:
  96 + broker: Newtend
  97 + username: Newtendtest
  98 + homepage: "http://dev23.newtend.com/openprocurement/tenders"
  99 + login: openprocboss@mailinator.com
  100 + password: 123123
  101 + browser: firefox
  102 + position: [700, 0]
  103 + size: [640, 450]
  104 + Newtend_Viewer:
  105 + broker: Newtend
  106 + username: Newtendtest
  107 + browser: firefox
  108 + position: [0, 0]
  109 + size: [640, 450]
Please register or login to post a comment