Advertisement
yboi

Untitled

Aug 25th, 2015
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.68 KB | None | 0 0
  1. *** Setting ***
  2. Library Selenium2Screenshots
  3. Library String
  4. Library DateTime
  5.  
  6. *** Variables ***
  7. ${locator.tenderId} jquery=h3
  8. ##Використовую такий шлях у кожного буде мінятись /yboi/. Міняйте на сві шлях до файлу
  9. ${file_path} /home/yboi/openprocurement.robottests.buildout/Document.docx
  10. ${locator.title} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[6]
  11. ${locator.description} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[7]
  12. ${locator.minimalStep.amount} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[9]
  13. ${locator.value.amount} xpath=(//div[@class = 'col-sm-8']/p[@class='ng-binding'])[8]
  14.  
  15. *** Keywords ***
  16. Підготувати клієнт для користувача
  17. [Arguments] @{ARGUMENTS}
  18. [Documentation] Відкрити брaвзер, створити обєкт api wrapper, тощо
  19. ... ${ARGUMENTS[0]} == username
  20. Open Browser ${USERS.users['${ARGUMENTS[0]}'].homepage} ${USERS.users['${username}'].browser} alias=${ARGUMENTS[0]}
  21. Set Window Size @{USERS.users['${ARGUMENTS[0]}'].size}
  22. Set Window Position @{USERS.users['${ARGUMENTS[0]}'].position}
  23. Run Keyword If '${username}' != 'E-tender_Viewer' Login
  24.  
  25. Login
  26. Wait Until Page Contains Element id=inputUsername 100
  27. Input text id=inputUsername ${USERS.users['${username}'].login}
  28. Wait Until Page Contains Element id=inputPassword 100
  29. Input text id=inputPassword ${USERS.users['${username}'].password}
  30. Click Button id=btn_submit
  31.  
  32. Створити тендер
  33. [Arguments] @{ARGUMENTS}
  34. [Documentation]
  35. ... ${ARGUMENTS[0]} == username
  36. ... ${ARGUMENTS[1]} == tender_data
  37. ${tender_data}= Add_time_for_GUI_FrontEnds ${ARGUMENTS[1]}
  38. ${items}= Get From Dictionary ${tender_data.data} items
  39. ${title}= Get From Dictionary ${tender_data.data} title
  40. ${description}= Get From Dictionary ${tender_data.data} description
  41. ${budget}= Get From Dictionary ${tender_data.data.value} amount
  42. ${step_rate}= Get From Dictionary ${tender_data.data.minimalStep} amount
  43. ${items_description}= Get From Dictionary ${tender_data.data} description
  44. ${quantity}= Get From Dictionary ${items[0]} quantity
  45. ${cpv}= Get From Dictionary ${items[0].classification} id
  46. ${unit}= Get From Dictionary ${items[0].unit} name
  47. ${start_date}= Get From Dictionary ${tender_data.data.tenderPeriod} startDate
  48. ${start_date}= convert_date_to_etender_format ${start_date}
  49. ${start_time}= Get From Dictionary ${tender_data.data.tenderPeriod} startDate
  50. ${start_time}= convert_time_to_etender_format ${start_time}
  51. ${end_date}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate
  52. ${end_date}= convert_date_to_etender_format ${end_date}
  53. ${end_time}= Get From Dictionary ${tender_data.data.tenderPeriod} endDate
  54. ${end_time}= convert_time_to_etender_format ${end_time}
  55. ${enquiry_end_date}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate
  56. ${enquiry_end_date}= convert_date_to_etender_format ${enquiry_end_date}
  57. ${enquiry_end_time}= Get From Dictionary ${tender_data.data.enquiryPeriod} endDate
  58. ${enquiry_end_time}= convert_time_to_etender_format ${enquiry_end_time}
  59. Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  60. Wait Until Page Contains Мої закупівлі 100
  61. Sleep 1
  62. Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі']
  63. Wait Until Page Contains Element xpath=//a[contains(@class, 'btn btn-info')]
  64. Sleep 1
  65. Click Element xpath=//a[contains(@class, 'btn btn-info')]
  66. Wait Until Page Contains Element id=title
  67. Input text id=title ${title}
  68. Input text id=description ${description}
  69. Input text id=value ${budget}
  70. Click Element xpath=//div[contains(@class, 'form-group col-sm-6')]//input[@type='checkbox']
  71. Input text id=minimalStep ${step_rate}
  72. Input text id=itemsDescription ${items_description}
  73. Input text id=itemsQuantity ${quantity}
  74. Wait Until Page Contains Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram']
  75. Click Element xpath=//select[@name="itemsUnit"]/option[@value='kilogram']
  76. Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='enqPEndDate'] ${enquiry_end_date}
  77. 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}
  78. Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='startDate'] ${start_date}
  79. 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}
  80. Input text xpath=//div[contains(@class, 'form-group col-sm-8')]//input[@name='endDate'] ${end_date}
  81. 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}
  82. Sleep 2
  83. Click Element xpath=//div[contains(@class, 'col-sm-2')]//input[@data-target='#classification']
  84. Sleep 1
  85. Input text xpath=//div[contains(@class, 'modal-content')]//input[@ng-model='searchstring'] ${cpv}
  86. Sleep 2
  87. Wait Until Page Contains ${cpv}
  88. Click Element xpath=//td[contains(., '${cpv}')]
  89. Sleep 1
  90. Click Element xpath=//div[contains(@class, 'modal-content')]//button[@ng-click='choose()']
  91. Sleep 1
  92. Додати предмет ${items[0]} 0
  93. Run Keyword if '${mode}' == 'multi' Додати багато предметів items
  94. Sleep 1
  95. Wait Until Page Contains Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']
  96. Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']
  97. Sleep 1
  98. Wait Until Page Contains [ТЕСТУВАННЯ] 100
  99. Sleep 20
  100. Click Element xpath=//*[text()='${title}']
  101. Sleep 5
  102. ${tender_UAid}= Get Text xpath=//div[contains(@class, "panel-heading")]
  103. ${tender_UAid}= Get Substring ${tender_UAid} 10
  104. ${Ids}= Convert To String ${tender_UAid}
  105. Run keyword if '${mode}' == 'multi' Set Multi Ids ${ARGUMENTS[0]} ${tender_UAid}
  106. [return] ${Ids}
  107.  
  108. Set Multi Ids
  109. [Arguments] @{ARGUMENTS}
  110. [Documentation]
  111. ... ${ARGUMENTS[0]} == ${tender_UAid}
  112. ${current_location}= Get Location
  113. ${id}= Get Substring ${current_location} 10
  114. ${Ids}= Create List ${tender_UAid} ${id}
  115.  
  116. Додати предмет
  117. [Arguments] @{ARGUMENTS}
  118. [Documentation]
  119. ... ${ARGUMENTS[0]} == items
  120. ... ${ARGUMENTS[1]} == ${INDEX}
  121. ${dkpp_desc}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} description
  122. ${dkpp_id}= Get From Dictionary ${ARGUMENTS[0].additionalClassifications[0]} id
  123. Sleep 2
  124. Click Element xpath=(//div[contains(@class, 'col-sm-2')]//input[@data-target='#addClassification'])[${ARGUMENTS[1]}+1]
  125. Wait Until Element Is Visible xpath=//div[contains(@id,'addClassification')]
  126. Sleep 2
  127. Input text xpath=//div[contains(@class, 'modal fade ng-scope in')]//input[@ng-model='searchstring'] ${dkpp_desc}
  128. Wait Until Page Contains ${dkpp_id}
  129. Sleep 1
  130. Click Element xpath=//td[contains(., '${dkpp_id}')]
  131. Click Element xpath=//div[contains(@class, 'modal fade ng-scope in')]//button[@ng-click='choose()']
  132. Sleep 2
  133.  
  134. Додати багато предметів
  135. [Arguments] @{ARGUMENTS}
  136. [Documentation]
  137. ... ${ARGUMENTS[0]} == items
  138. ${Items_length}= Get Length ${items}
  139. : FOR ${INDEX} IN RANGE 1 ${Items_length}
  140. \ Click Element xpath=.//*[@id='myform']/tender-form/div/button
  141. \ Додати предмет ${items[${INDEX}]} ${INDEX}
  142.  
  143. Пошук тендера по ідентифікатору
  144. [Arguments] @{ARGUMENTS}
  145. [Documentation]
  146. ... ${ARGUMENTS[0]} == username
  147. ... ${ARGUMENTS[1]} == ${TENDER_UAID}
  148. Switch browser ${ARGUMENTS[0]}
  149. Go to ${BROKERS['${USERS.users['${username}'].broker}'].url}
  150. Wait Until Page Contains Список закупівель 10
  151. sleep 1
  152. Input Text jquery=input[ng-change='search()'] ${ARGUMENTS[1]}
  153. Click Link jquery=a[ng-click='search()']
  154. sleep 2
  155. Click Link jquery=a[href^="#/tenderDetailes"]
  156. Wait Until Page Contains ${ARGUMENTS[1]} 10
  157. sleep 1
  158. Capture Page Screenshot
  159.  
  160. Подати цінову пропозицію
  161. [Arguments] @{ARGUMENTS}
  162. [Documentation]
  163. ... ${ARGUMENTS[0]} == username
  164. ... ${ARGUMENTS[1]} == ${TENDER_UAID}
  165. ... ${ARGUMENTS[2]} == test_bid_data
  166.  
  167. ${bid}= Get From Dictionary ${ARGUMENTS[2].data.value} amount
  168. etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  169. Wait Until Page Contains Інформація про процедуру закупівлі 100
  170. Wait Until Page Contains Element id=amount 10
  171. Input text id=amount ${bid}
  172. Click Element xpath=//button[contains(@class, 'btn btn-success')][./text()='Реєстрація пропозиції']
  173.  
  174. Задати питання
  175. [Arguments] @{ARGUMENTS}
  176. [Documentation]
  177. ... ${ARGUMENTS[0]} = username
  178. ... ${ARGUMENTS[1]} = ${TENDER_UAID}
  179. ... ${ARGUMENTS[2]} = question_data
  180.  
  181. ${title}= Get From Dictionary ${ARGUMENTS[2].data} title
  182. ${description}= Get From Dictionary ${ARGUMENTS[2].data} description
  183.  
  184. Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  185. etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  186.  
  187. Wait Until Page Contains Element jquery=a[href^="#/addQuestion/"] 100
  188. Click Element jquery=a[href^="#/addQuestion/"]
  189. Wait Until Page Contains Element id=title
  190. Input text id=title ${title}
  191. Input text id=description ${description}
  192. Click Element xpath=//div[contains(@class, 'form-actions')]//button[@type='submit']
  193.  
  194. Відповісти на питання
  195. [Arguments] @{ARGUMENTS}
  196. [Documentation]
  197. ... ${ARGUMENTS[0]} = username
  198. ... ${ARGUMENTS[1]} = ${TENDER_UAID}
  199. ... ${ARGUMENTS[2]} = 0
  200. ... ${ARGUMENTS[3]} = answer_data
  201.  
  202. ${answer}= Get From Dictionary ${ARGUMENTS[3].data} answer
  203.  
  204. Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  205. etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  206.  
  207. Click Element xpath=//div[div/pre[1]]/div[1]
  208. Input text xpath=//div[textarea]/textarea ${answer}
  209. Click Element xpath=//div[textarea]/span/button[1]
  210.  
  211. обновити сторінку з тендером
  212. [Arguments] @{ARGUMENTS}
  213. [Documentation]
  214. ... ${ARGUMENTS[0]} == username
  215. ... ${ARGUMENTS[1]} == tenderId
  216. ... ${ARGUMENTS[2]} == id
  217. ${current_location}= Get Location
  218. Run keyword if '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Reload Page
  219. Run keyword unless '${BROKERS['${USERS.users['${username}'].broker}'].url}/#/tenderDetailes/${ARGUMENTS[2]}'=='${current_location}' Пошук тендера по ідентифікатору @{ARGUMENTS}
  220. Wait Until Page Contains ${ARGUMENTS[1]} 10
  221. sleep 1
  222.  
  223. Внести зміни в тендер
  224. [Arguments] @{ARGUMENTS}
  225. [Documentation]
  226. ... ${ARGUMENTS[0]} = username
  227. ... ${ARGUMENTS[1]} = ${TENDER_UAID}
  228. ${ADDITIONAL_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} single
  229. ${tender_data}= Add_time_for_GUI_FrontEnds ${ADDITIONAL_DATA}
  230. ${items}= Get From Dictionary ${tender_data.data} items
  231. ${description}= Get From Dictionary ${tender_data.data} description
  232. Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  233. etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  234. Wait Until Page Contains Element xpath=//a[@class='btn btn-primary ng-scope'] 10
  235. Click Element xpath=//a[@class='btn btn-primary ng-scope']
  236. Sleep 2
  237. Input text id=description ${description}
  238. Click Element xpath=//button[@class='btn btn-info ng-isolate-scope']
  239. Capture Page Screenshot
  240.  
  241. додати предмети закупівлі
  242. [Arguments] @{ARGUMENTS}
  243. [Documentation]
  244. ... ${ARGUMENTS[0]} = username
  245. ... ${ARGUMENTS[1]} = ${TENDER_UAID}
  246. ... ${ARGUMENTS[2]} = 3
  247. ${ADDITIONAL_DATA}= prepare_test_tender_data ${BROKERS['${USERS.users['${tender_owner}'].broker}'].period_interval} multi
  248. ${tender_data}= Add_time_for_GUI_FrontEnds ${ADDITIONAL_DATA}
  249. ${items}= Get From Dictionary ${tender_data.data} items
  250. Selenium2Library.Switch Browser ${ARGUMENTS[0]}
  251. Run keyword if '${TEST NAME}' == 'Можливість додати позицію закупівлі в тендер' додати позицію
  252. Run keyword if '${TEST NAME}' != 'Можливість додати позицію закупівлі в тендер' видалити позиції
  253.  
  254. додати позицію
  255. etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  256. Sleep 2
  257. Click Element xpath=//a[@class='btn btn-primary ng-scope']
  258. Sleep 2
  259. : FOR ${INDEX} IN RANGE 1 ${ARGUMENTS[2]} +1
  260. \ Click Element xpath=.//*[@id='myform']/tender-form/div/button
  261. \ Додати предмет ${items[${INDEX}]} ${INDEX}
  262. Sleep 2
  263. Click Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни']
  264. Wait Until Page Contains [ТЕСТУВАННЯ] 100
  265.  
  266. видалити позиції
  267. etender.Пошук тендера по ідентифікатору ${ARGUMENTS[0]} ${ARGUMENTS[1]}
  268. Click Element xpath=//a[@class='btn btn-primary ng-scope']
  269. Sleep 2
  270. : FOR ${INDEX} IN RANGE 1 ${ARGUMENTS[2]} +1
  271. \ Click Element xpath=(//button[@class='btn btn-danger ng-scope'])[last()]
  272. \ Sleep 1
  273. Sleep 2
  274. Wait Until Page Contains Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни'] 10
  275. Click Element xpath=//div[@class='form-actions']/button[./text()='Зберегти зміни']
  276. Wait Until Page Contains [ТЕСТУВАННЯ] 100
  277.  
  278. отримати інформацію із тендера
  279. [Arguments] @{ARGUMENTS}
  280. [Documentation]
  281. ... ${ARGUMENTS[0]} == username
  282. ... ${ARGUMENTS[1]} == fieldname
  283. Switch browser ${ARGUMENTS[0]}
  284. ${return_value}= run keyword отримати інформацію про ${ARGUMENTS[1]}
  285. Log ${return_value}
  286. [return] ${return_value}
  287.  
  288. Отримати тест із поля і показати на сторінці
  289. [Arguments] ${fieldname}
  290. sleep 3
  291. # відмітити на сторінці поле з тендера ${fieldname} ${locator.${fieldname}}
  292. ${return_value}= Get Text ${locator.${fieldname}}
  293. [return] ${return_value}
  294.  
  295. отримати інформацію про title
  296. ${return_value}= Отримати тест із поля і показати на сторінці title
  297. [return] ${return_value}
  298.  
  299. отримати інформацію про description
  300. ${return_value}= Отримати тест із поля і показати на сторінці description
  301. [return] ${return_value}
  302.  
  303. отримати інформацію про minimalStep.amount
  304. ${return_value}= Отримати тест із поля і показати на сторінці minimalStep.amount
  305. ${return_value}= Convert To Number ${return_value.split(' ')[0]}
  306. [return] ${return_value}
  307.  
  308. отримати інформацію про value.amount
  309. ${return_value}= Отримати тест із поля і показати на сторінці value.amount
  310. ${return_value}= Evaluate "".join("${return_value}".split(' ')[:-3])
  311. ${return_value}= Convert To Number ${return_value}
  312. [return] ${return_value}
  313.  
  314. Відмітити на сторінці поле з тендера
  315. [Arguments] ${fieldname} ${locator}
  316. ${last_note_id}= Add pointy note ${locator} Found ${fieldname} width=200 position=bottom
  317. Align elements horizontally ${locator} ${last_note_id}
  318. sleep 1
  319. Remove element ${last_note_id}
  320.  
  321. отримати інформацію про tenderId
  322. ${return_value}= отримати тест із поля і показати на сторінці tenderId
  323. ${return_value}= Get Substring ${return_value} 10
  324. [return] ${return_value}
  325.  
  326. отримати інформацію про procuringEntity.name
  327. ${return_value}= Отримати тест із поля і показати на сторінці procuringEntity.name
  328. [return] ${return_value}
  329.  
  330. отримати інформацію про tenderPeriod.startDate
  331. ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.startDate
  332. [return] ${return_value}
  333.  
  334. отримати інформацію про tenderPeriod.endDate
  335. ${return_value}= Отримати тест із поля і показати на сторінці tenderPeriod.endDate
  336. [return] ${return_value}
  337.  
  338. отримати інформацію про enquiryPeriod.startDate
  339. ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.startDate
  340. [return] ${return_value}
  341.  
  342. отримати інформацію про enquiryPeriod.endDate
  343. ${return_value}= Отримати тест із поля і показати на сторінці enquiryPeriod.endDate
  344. [return] ${return_value}
  345.  
  346. отримати інформацію про items[${item_id}].description
  347. відмітити на сторінці поле з тендера items[${item_id}].description jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)>
  348. ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Детальний опис предмету закупівлі:")>:eq(1)>
  349. [return] ${return_value}
  350.  
  351. отримати інформацію про items[${item_id}].quantity
  352. відмітити на сторінці поле з тендера items[${item_id}].quantity jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Кількість:")>:eq(1)>
  353. ${return_value}= Get Text jquery=tender-subject-info.ng-isolate-scope>div.row:contains("Кількість:")>:eq(1)>
  354. ${return_value}= Convert To Number ${return_value}
  355. [return] ${return_value}
  356.  
  357. отримати інформацію про items[${item_id}].classification.id
  358. відмітити на сторінці поле з тендера items[0].classification.id jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)>
  359. ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)>
  360. [return] ${return_value.split(' ')[0]}
  361.  
  362. отримати інформацію про items[${item_id}].classification.scheme
  363. відмітити на сторінці поле з тендера items[0].classification.id jquery=tender-subject-info>div.row:contains("CPV")>:eq(1)>
  364. ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("CPV")>:eq(1)>
  365. [return] ${return_value.split(' ')[0]}
  366.  
  367. отримати інформацію про items[${item_id}].classification.description
  368. відмітити на сторінці поле з тендера classification.description jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)>
  369. ${return_value}= Get Text jquery=tender-subject-info>div.row:contains("Класифікатор CPV:")>:eq(1)>
  370. ${return_value}= catenate @{return_value.split(' ')[1:]}
  371. [return] ${return_value}
  372.  
  373. отримати інформацію про items[${item_id}].deliveryAddress
  374. ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryAddress
  375. [return] ${return_value}
  376.  
  377. отримати інформацію про items[${item_id}].deliveryDate
  378. ${return_value}= Отримати тест із поля і показати на сторінці items[${item_id}].deliveryDate
  379. [return] ${return_value}
  380.  
  381. отримати інформацію про questions[${question_id}].title
  382. відмітити на сторінці поле з тендера questions title jquery=tender-questions>div:eq(1)>div.row:contains("Тема:")>:eq(1)>
  383. ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Тема:")>:eq(1)>
  384. [return] ${return_value}
  385.  
  386. отримати інформацію про questions[${question_id}].description
  387. відмітити на сторінці поле з тендера questions description jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)>
  388. ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Питання:")>:eq(1)>
  389. [return] ${return_value}
  390.  
  391. отримати інформацію про questions[${question_id}].date
  392. відмітити на сторінці поле з тендера question date jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)>
  393. ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div.row:contains("Дата:")>:eq(1)>
  394. [return] ${return_value}
  395.  
  396. отримати інформацію про questions[${question_id}].answer
  397. відмітити на сторінці поле з тендера question answer jquery=tender-questions>div:eq(1)>div:last>
  398. ${return_value}= Get Text jquery=tender-questions>div:eq(1)>div:last>
  399. [return] ${return_value}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement