12/08/2018, 14:37

Robot framework dành cho tester (Phần IV)

Cài đặt Robot Framework và sử dụng cơ bản: Robot framework dành cho tester (Phần I) Selenium2Libray - Thư viện kiểm thử web dành cho Robot Framework: Robot framework dành cho tester (Phần II) Cách sử dụng RIDE hiệu quả: Robot framework dành cho tester (Phần III) Như đã giới thiệu ...

  • Cài đặt Robot Framework và sử dụng cơ bản: Robot framework dành cho tester (Phần I)
  • Selenium2Libray - Thư viện kiểm thử web dành cho Robot Framework: Robot framework dành cho tester (Phần II)
  • Cách sử dụng RIDE hiệu quả: Robot framework dành cho tester (Phần III)

Như đã giới thiệu ở những phần trước, tôi đã sử dụng Selenium2Library khi thực hiện demo kiểm thử web và một số bạn đã hỏi lý do vì sao tôi đã chọn Selenium2Library thay cho SeleniumLibrary. Vì thế trong phần IV này, tôi đã chọn bài viết này Robot Framework Tutorial 2016 – Selenium2Library as a drop-in replacement for SeleniumLibrary để trả lời câu hỏi đấy.

Selenium là một trong các công cụ đầu tiên dùng để kiểm thử các ứng dụng trên Web. Trong suốt thời gian phát triển của mình, Selenium đã có một số cải tiến đáng kể thông qua các thư viện của nó. Cải tiến to lớn nhất chắc chắn phải kể đến chính là bước nâng từ Selenium1 (Selenium-RC) lên Selenium 2 (Selenium Web-Driver). Mặc dù Selenium2 không còn mới mẻ nữa vì đã ra đời nhiều năm nhưng nhiều dự án vẫn đang dùng Selenium-RC, và một số dự án sử dụng Robot Framework cũng đang sử dụng Selenium-RC. Với ý định hướng mọi người chuyển đổi sang Selenium2 vì nó tốn ít công sức và được hỗ trợ tốt hơn, dưới đây là bảng so sánh các keyword của 2 thư viện này.

Có thể bây giờ bạn cảm thấy bảng so sánh này chưa có tác dụng gì cả, nhưng chắc chắn khi bạn cần tra cứu (nhất là khi chuyển đổi từ SeleniumLibrary sang Selenium2Library), nó sẽ có ích cho bạn!

SeleniumRC Selenium2 SeleniumRC Selenium2 SeleniumRC Selenium2
Add Cookie Add Location Strategy Alert Should Be Present Alert Should Be Present
Assign Id To Element Assign Id To Element Call Selenium Api Assign Id To Element
Capture Page Screenshot Capture Page Screenshot Capture Screenshot Checkbox Should Be Selected Checkbox Should Be Selected
Checkbox Should Not Be Selected Checkbox Should Not Be Selected Choose Cancel On Next Confirmation Choose Cancel On Next Confirmation Choose File Choose File
Choose Ok On Next Confirmation Clear Element Text Click Button Click Button
Click Element Click Element Click Flex Element Click Element At Coordinates
Click Image Click Image Click Link Click Link Close All Browsers Close All Browsers
Close Browser Close Browser Close Window Close Window Confirm Action Confirm Action
Create Webdriver Current Frame Contains Current Frame Contains Current Frame Should Contain
Current Frame Should Not Contain Delete All Cookies Delete All Cookies Delete Cookie Delete Cookie
Dismiss Alert Double Click Element Double Click Element Double Click Flex Element
Drag And Drop Drag And Drop By Offset Element Should Be Disabled Element Should Be Disabled
Element Should Be Enabled Element Should Be Enabled Element Should Be Visible Element Should Be Visible Element Should Contain Element Should Contain
Element Should Not Be Visible Element Should Not Be Visible Element Should Not Contain Element Text Should Be Element Text Should Be
Execute Async Javascript Execute Javascript Execute Javascript Flex Element Property Should Be
Flex Element Should Exist Flex Element Should Not Exist Flex Element Text Should Be
Focus Focus Frame Should Contain Frame Should Contain Frame Should Contain Text
Get Alert Message Get Alert Message Get All Links Get All Links Get Cookie Value Get Cookie Value
Get Cookies Get Cookies Get Element Attribute Get Element Attribute Get Horizontal Position Get Horizontal Position
Get Inner Html Get List Items Get List Items Get Location Get Location
Get Matching Xpath Count Get Matching Xpath Count Get Selected List Label Get Selected List Label Get Selected List Labels Get Selected List Labels
Get Selected List Value Get Selected List Value Get Selected List Values Get Selected List Values Get Selenium Implicit Wait
Get Selenium Speed Get Selenium Speed Get Selenium Timeout
Get Source Get Source Get Table Cell Get Table Cell Get Text Get Text
Get Title Get Title Get Value Get Value Get Vertical Position Get Vertical Position
Get Webelement Get Webelements Get Window Identifiers Get Window Identifiers
Get Window Names Get Window Names Get Window Position Get Window Size
Get Window Titles Get Window Titles Go Back Go Back Go To Go To
Highlight Element Input Password Input Password Input Text Input Text
Input Text Into Flex Element Input Text Into Prompt List Selection Should Be List Selection Should Be
List Should Have No Selections List Should Have No Selections List Windows Location Should Be Location Should Be
Location Should Contain Location Should Contain Locator Should Match X Times Log Location
Log Source Log Source Log Title Maximize Browser Window Maximize Browser Window
Mouse Down Mouse Down Mouse Down On Image Mouse Down On Image Mouse Down On Link Mouse Down On Link
Mouse Out Mouse Out Mouse Over Mouse Over Mouse Up Mouse Up
Open Browser Open Browser Open Context Menu Open Context Menu Page Should Contain Page Should Contain
Page Should Contain Button Page Should Contain Button Page Should Contain Checkbox Page Should Contain Checkbox Page Should Contain Element Page Should Contain Element
Page Should Contain Image Page Should Contain Image Page Should Contain Link Page Should Contain Link Page Should Contain List Page Should Contain List
Page Should Contain Radio Button Page Should Contain Radio Button Page Should Contain Textfield Page Should Contain Textfield Page Should Not Contain Page Should Not Contain
Page Should Not Contain Button Page Should Not Contain Button Page Should Not Contain Checkbox Page Should Not Contain Checkbox Page Should Not Contain Element Page Should Not Contain Element
Page Should Not Contain Image Page Should Not Contain Image Page Should Not Contain Link Page Should Not Contain Link Page Should Not Contain List Page Should Not Contain List
Page Should Not Contain Radio Button Page Should Not Contain Radio Button Page Should Not Contain Textfield Page Should Not Contain Textfield Press Key Press Key
Press Key Native Radio Button Should Be Set To Radio Button Should Be Set To Radio Button Should Not Be Selected Radio Button Should Not Be Selected
Register Keyword To Run On Failure Register Keyword To Run On Failure Reload Page Reload Page Remove Location Strategy
Select All From List Select All From List Select Checkbox Select Checkbox Select Flex Application
Select Frame Select Frame Select From Flex Element Select From List Select From List
Select From List By Index Select From List By Label Select From List By Value
Select Radio Button Select Radio Button Select Window Select Window Set Browser Implicit Wait
Set Screenshot Directory Set Selenium Implicit Wait Set Selenium Speed Set Selenium Speed
Set Selenium Timeout Set Selenium Timeout Set Window Position Set Window Size
Simulate Simulate Start Selenium Server Stop Selenium Server
Submit Form Submit Form Switch Browser Switch Browser Table Cell Should Contain Table Cell Should Contain
Table Column Should Contain Table Column Should Contain Table Footer Should Contain Table Footer Should Contain Table Header Should Contain Table Header Should Contain
Table Row Should Contain Table Row Should Contain Table Should Contain Table Should Contain Textarea Should Contain
Textarea Value Should Be Textfield Should Contain Textfield Should Contain Textfield Value Should Be Textfield Value Should Be
Title Should Be Title Should Be Unselect Checkbox Unselect Checkbox Unselect Frame Unselect Frame
Unselect From List Unselect From List Unselect From List By Index Unselect From List By Label
Unselect From List By Value Wait For Condition Wait For Condition Wait For Flex Element
Wait Until Element Contains Wait Until Element Does Not Contain Wait Until Element Is Enabled
Wait Until Element Is Not Visible Wait Until Element Is Visible Wait Until Page Contains Wait Until Page Contains
Wait Until Page Contains Element Wait Until Page Contains Element Wait Until Page Loaded Wait Until Page Does Not Contain
Wait Until Page Does Not Contain Element Xpath Should Match X Times Xpath Should Match X Times

Dựa vào bảng so sánh trên và tài liệu ở đây, ta có thể nắm bắt nhanh những điểm khác nhau khi chuyển đổi từ SeleniumLibrary sang Selenium2Library như sau:

Điểm khác nhau cơ bản:

  • Có thay đổi rất nhỏ về các locator.
  • Không còn hỗ trợ Flex.
  • Các thuộc tính wait và dont_wait đã bị gỡ bỏ khỏi Selenium2Library vì Selenium2/WebDriver không còn sử dụng API nữa, vì thế việc waiting hay not waiting sẽ được xử lý một cách tự nhiên.
  • Các thuộc tính coordinates đã bị gỡ bỏ khỏi các keyword liên quan đến click, vì để sử dụng được chúng đòi hỏi Advanced User Interactions API - không còn hỗ trợ được.

Cụ thể hơn, những điểm khác nhau như sau:

Locators:

  • Không hỗ trợ wildcard trong các locator.
  • Có thêm một số prefix/strategy trong các locator, chẳng hạn: link =, css=, tag=

Importing Thư viện:

  • Các thuộc tính server_host, server_port, và jar_path đã bị gỡ bỏ.

Các keyword mới trong Selenium2Library:

  • Get Selenium Speed
  • Get Selenium Timeout
  • Log Title
  • Log Location

Các keyword được sửa đổi:

  • Choose File - Hỗ trợ các pulled remote files
  • Click Button - Gỡ bỏ thuộc tính dont_wait
  • Click Element - Gỡ bỏ các thuộc tính dont_wait và coordinates
  • Click Image - Gỡ bỏ thuộc tính dont_wait
  • Click Link - Gỡ bỏ thuộc tính dont_wait
  • Double Click Element - Gỡ bỏ các thuộc tính dont_wait và coordinates
  • Go Back - Gỡ bỏ thuộc tính dont_wait
  • Open Context Menu - Gỡ bỏ thuộc tính offset
  • Press Key - Gỡ bỏ thuộc tính dont_wait
  • Select All From List - Gỡ bỏ thuộc tính wait
  • Select Radio Button - Gỡ bỏ thuộc tính wait
  • Submit Form - Gỡ bỏ thuộc tính dont_wait

Các keyword đã bị gỡ bỏ khỏi Selenium2Library:

  • Các keyword liên quan đến Flex
  • Add Location Strategy
  • Call Selenium API
  • Capture Screenshot (tính năng này đã được hỗ trợ tốt hơn trong việc Chụp Màn Hình Trang trong Selenium2/WebDriver, và ngược lại không còn hỗ trợ trong việc chụp toàn màn hình nữa)
  • Drag And Drop
  • Press Key Native
  • Start Selenium Server
  • Stop Selenium Server
  • Wait Until Page Loaded (Selenium 2/WebDriver đã chặn API vì thế keyword này không còn quan trọng nữa)

Nguồn dữ liệu sử dụng làm ví dụ trong bài viết:

  • https://blog.codecentric.de/en/2016/03/robot-framework-tutorial-2016-selenium2library-drop-replacement-seleniumlibrary/
  • https://github.com/robotframework/Selenium2Library/wiki/Differences-From-SeleniumLibrary
0