Showing posts with label Robot Framework. Show all posts
Showing posts with label Robot Framework. Show all posts

How to use webdrivermanager in robotframework

Hi các bạn!

Dạo này covit, rảnh hơn chút nên viết blog hehe.

Hôm nay chúng ta sẽ nói về webdrivermanager robotframework.

Ở bài testcase đầu tiên trong robotframework, để chạy được testcase đầu tiên, thì chúng ta cần phải check version của trình duyệt cần thực thi testcase (ví dụ như chrome), sau đó cần lên tìm chromedriver tương thích với phiên bản đó, rồi down về....

Thay vì phải làm thủ công như vậy thì khi sử dụng webdrivermanager, chúng ta sẽ không phải down chrome bằng cơm nữa hehe.

lợi ích hay như vậy, nhưng mà khi tìm kiếm về webdrivermanager thì các bạn thấy là nó chỉ dùng cho python thuần. Vậy muốn dùng nó trong robotframework thì phải làm sao?

ok, chúng ta cùng tìm hiểu nhé.

Các bạn sẽ tìm thấy nhiều phiên bản khác nhau, nhưng trong khuôn khổ bài viết này, mình sẽ nói về webdriver_manager (xem thêm ở trang chủ)

1. Cài đặt webdriver-manager như sau

pip install webdriver-manager

2. Sau khi cài xong, mở 1 IDE để code python, ví dụ pycharm chả hạn 

3. Tạo mới 1 class python, ở đây mình đặt tên Mycode.py 

trong đó sử dụng đoạn code sau để download driver mong muốn (có thể là chrome hay firefox).

Trong đoạn code đơn giản này, mình đã if else sao cho nó download driver tương ứng với tên trình duyệt mình truyền vào. Các bạn có thể custom lại theo ý thích nhé hehe.

Giải thích code như sau:

- sau khi thư viện nó tự động download driver theo browser_name tương ứng, chúng ta sẽ return lại path đó, rồi trong robotframework, sử dụng lại path đó trong keyword Open Browser

đọc thêm về keyword này tại trang chủ seleniumlibrary

from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.firefox import GeckoDriverManager


def get_driver_path_with_browser(browser_name):
    if browser_name.lower() == 'chrome':
        driver_path = ChromeDriverManager().install()
    elif browser_name.lower() == 'firefox':
        driver_path = GeckoDriverManager().install()
    print(driver_path)
    return driver_path

4. copy file python vào thư mục gốc của project robotframework

5. Gọi lại code file python trong robotframework bằng cú pháp 

Library           tên file python.py

cụ thể sẽ như này

Library    Mycode.py

6. sau khi import file python vào ở bước 5. giờ đây khi sử dụng, chỉ cần gọi lại tên method trong file python. chú ý khi gọi lại sẽ không còn dấu _ trong tên method, mà thay vào đó sẽ là dấu cách

Để tưởng minh, có thể để tên file python đằng trước để phân biệt đó là method do mình custom từ python

*** Settings ***
Library           SeleniumLibrary
Library           Mycode.py

*** Test Cases ***
demo webdriver manager using robotframework
    ${driver_path}=    Mycode.Get Driver Path With Browser        Firefox
    Open Browser          https://pypi.org/project/webdriver-manager/         firefox       executable_path=${driver_path} 
    Go to    https://pypi.org/project/webdriver-manager/
    Close Browser

Cơ bản thì cấu trúc thư mục sẽ như thế này



Chạy tetscase và nhìn thành quả thôi haha


Code demo có tại github

Vậy là qua bài này, chúng ta đã tìm hiểu cách gọi lại một method của python trong robotframework, cũng như cách sử dụng webdriver_manager với robotframework.

Hẹn gặp các bạn ở các bài tiếp theo. Có gì thắc mắc hãy để lại bình luận nhé :D

Note: IDE để code robotframework, mình hay dùng https://nokia.github.io/RED/ 





Find your elements faster ios appium in robotframework

Chào các bạn!
Nếu ai đã từng auto cho ios sử dụng appium, thì sẽ nhận ra rằng sử dụng xpath sẽ chậm hơn khá nhiều so với dùng ID hoặc Name.
Hiện tại chúng ta có thể cải thiện tốc độ bằng cách hạn chế sử dụng Xpath.
Thay vào đó chúng ta có thể tìm theo iOS PredicateClass Chain
Bài viết này sẽ hướng dẫn các bạn tăng tốc độ tìm element với ios trong robotframework.
Trước tiên chúng ta sẽ xem tốc độ của xpath so với iOS Predicate và Class Chain là như nào với ví dụ dưới đây



Có thể chúng ta thấy tốc độ chênh lệch nhau không nhiều trong 1 TC. nhưng nếu chúng ta có 100 hay 200 testcase thì chúng ta cũng tiết kiệm được kha khá thời gian đấy :D

ok, giờ chúng ta sẽ đi vào chi tiết như sau:

Cách dùng iOS Predicate 

1. trường hợp đơn giản nhất là button có label là Scrolling

type == 'XCUIElementTypeButton' AND label == "Scrolling"

2. như trường hợp 1 nhưng muốn thêm visiable vào thì như sau:

type == 'XCUIElementTypeButton' AND label == "Scrolling" AND visible == 1

3. trường hợp muốn tìm button có label bắt đầu bằng chữ Scroll

type == 'XCUIElementTypeButton' AND label BEGINSWITH 'Scroll' AND visible == 1

4. trường hợp mà muốn tìm button có chứa Scroll

type == 'XCUIElementTypeButton' AND label CONTAINS 'Scroll' AND visible == 1

Thông tin chi tiết thì các bạn xem thêm ở đây nhé.

Cách dùng Class Chain

1. chọn button thứ 3 sau thằng cha

**/XCUIElementTypeWindow/XCUIElementTypeButton[3]

2. chọn tất cả các các Cell, trong đó name bắt đầu bằng 'B'

**/XCUIElementTypeCell['name BEGINSWITH "B"']

Nhiều cách sử dụng hơn thì xem tại đây nhé

Qua bài viết này, chúng ta có thêm lựa chọn để tăng tốc độ tìm kiếm element trong ios khi dùng appium. Qua đó làm giảm thời gian chạy testcase bằng cách dùng iOS Predicate  và Class Chain để thay thế xpath trong 1 số trường hợp.

Mọi góp ý xin để lại dưới bình lựng!
Xin cảm ơn và hẹn gặp lại các bạn trong các bài tiếp theo!

Code ví dụ có trên github, các bạn clone ở đây nhé


Page Object Model In Robot Framework

Chào các bạn, chúng ta lại gặp nhau trong loạt bài về robot framework.
Hôm nay chúng ta sẽ nói về mô hình POM - Page Object Model in robot framework.
Mình tin rằng khi các bạn mới dùng robot framework thì cũng sẽ thắc mắc về cách tổ chức code trong project của robotframework như thế nào?
Đầu tiên chúng ta sẽ chia thành các thư mục như sau:
1. Page: nơi sẽ chứa các page của trang web or mobile app. ví dụ nhưng page login chả hạn
2. Resources: Nơi sẽ chứa các hàm common, hoặc các data test hoặc file cài đặt , ví dụ như apk or app
3. Test: Nơi sẽ chứa toàn bộ test case của dự án, có thể chia nhỏ hơn thành các thư mục con, ví dụ như test_login

Code của 3 file như sau


OK, chúng ta sẽ đi từng file cụ thể như sau:
1. File common_keyword.robot:
File này sẽ chứa toàn bộ các keyword dùng chung, ví dụ như input text , click element...
Trong ví dụ này, cụ thể mình có 03 keyword như dưới đây. Để đảm bảo tetstcase luôn đúng thì mình  chờ cho nó xuất hiện.
Ở đây, chúng ta sẽ khai báo tất cả các thư viện cần sử dụng vào 1 file này, khi cần sửa, xóa thì cứ vào file common_keyword.robot chứ không cần phải đi tìm ở các file khác.

*** Settings ***
Library    SeleniumLibrary

*** Keywords ***
wait and input text
    [Arguments]    ${locator}    ${txt_value}
    Wait Until Element Is Visible     ${locator}
    Input Text    ${locator}    ${txt_value}

wait and click element
    [Arguments]    ${locator}
     Wait Until Element Is Visible     ${locator}
     Click Element    ${locator}


Check Element Visible
    [Arguments]    ${locator}
    ${present}=    Run Keyword And Return Status    Element Should Be Visible       ${locator}    10s
    [Return]    ${present}

2. File loginPage.robot
File này chứa các element của page cần test, và chứa các action liên quan .
Chú ý: các locator của element sẽ được đặt vào biến, để sau này khi locator bị thay đổi, thì chúng ta chỉ cần đổi ở nơi khai báo biến là được.
Trong page, cần import file common để có thể sử dụng tất cả các keywork của file common.
*** Settings ***
Resource    ../Resources/common_keyword.robot

*** Variables ***
${url}    https://www.adayroi.com/
${btn_DangNhap_DangKy}      Class:header-username
${txt_name}    id:j_username
${txt_pass}    id=j_password
${btn_login}    css=.btn.btn-primary.btn-block.js-login-btn

*** Keywords ***
open website Adayroi
    Open Browser    ${url}    chrome

click button DangNhap,DangKy
    wait and click element    ${btn_DangNhap_DangKy}

type username
    [Arguments]    ${txt_value}
    wait and input text    ${txt_name}     ${txt_value}

type password
    [Arguments]    ${txt_value}
    wait and input text    ${txt_pass}     ${txt_value}

click button login
    wait and click element    ${btn_login}
3. File testLogin.robot
file test này chúng ta chỉ cần gọi lại các action tương ứng với các step ở Page cần test.
Chú ý: trong setting cần import file loginpage để có thể dùng các keywork ở page đó.

*** Settings ***
Resource    ../page/loginPage.robot
*** Test Cases ***
test login
    open website Adayroi
    click button DangNhap,DangKy
    type username    hainv
    type password    123456
    click button login

OK, vậy là chúng ta đã hiểu cơ bản cách dùng Page Object Model in robot framework là như thế nào.
Hẹn gặp các bạn ở bài sau!
Các bạn có ý kiến gì hãy để lại comment nhé!

How To Upgrade New Version Of RIDE On Windows

Chào các bạn!
Chắc hẳn các bạn đã nhận được thông báo có phiên bản mới của RIDE. Bạn đang gặp rắc rối khi nâng cấp phiên bản mới? Vậy thì hãy đọc tips dưới đây để nâng cấp phiên bản của RIDE cho windows.

Đầu tiên, chúng ta chạy lệnh sau trên CMD
pip install --upgrade robotframework-ride

Nếu gặp lỗi như trong ảnh, thì hãy chuyển qua bước tiếp theo


robotframework-ride 1.7.3.1 has requirement Pypubsub==3.3.0, but you'll have pypubsub 4.0.0 which is incompatible.

Gỡ thư viện pypubsub hiện tại, và cài đặt lại đúng phiên bản 3.3.0 như yêu cầu. Chúng ta chạy lần lượt 2 lệnh sau:


pip uninstall pypubsub

pip install pypubsub==3.3.0

Sau khi cài xong, chạy lệnh ride.py trên cmd để tận hưởng phiên bản 1.7.3 của RIDE :D

Xem thông tin chi tiết về phiên bản 1.7.3 tại đây!


How To Fix Robot Framework installation not found On RIDE In Windows

Chào các bạn! Chúng ta lại gặp lại nhau trong loạt bài về Robot Framework!
Đang dùng RIDE bình thường, bỗng một ngày không đẹp trời, nó dở chứng gặp lỗi "Robot Framework installation not found" khi chạy test case => chúng ta phải làm gì?


Bước 1: kiểm tra xem Robot đã được cài đặt chưa?
kiểm tra bằng lệnh sau 

robot --version


Nếu chưa cài đặt thì bạn hãy cài theo lệnh sau trên CMD 

pip install robotframework

Bước 2: Kiểm tra xem Python đã được add vào PATH chưa
Nếu chưa hãy thêm đường dẫn của Python/Scripts vào PATH nhé



Bước 3: Tạo mới file pybot.bat trong thư mục C:\Python27\Scripts  và paste đoạn code này vào

@echo off
python -m robot.run %*



OK, vậy là đã fix xong lỗi "Robot Framework installation not found".
Hẹn gặp các bạn ở bài sau!


Automation Testing iOS App With Robotframework On Mac OS using Appiumlibrary

Chào các bạn!
Hôm nay 24/12, mình ở nhà trông con, nhân lúc con ngủ thì chúng ta lại gặp nhau trong loạt bài automation testing mobile application.
Bài trước chúng ta đã tìm hiểu cách Automation Testing Android With Robotframework, bài viết này chúng ta sẽ tìm hiểu cách Automation Testing iOS App With Robot framework using Appiumlibrary
Các công cụ cần thiết
  1. Brew
  2. Python
  3. Node JS
  4. Appium server
  5. Cấu hình Xcode lần đầu tiên cài đặt
  6. Cài đặt robot framework
  7. IDE hoặc editor để code robot framework
Bước 1: Cài Brew tại trang chủ
https://brew.sh/ 
Brew là gì? hiểu ngắn gọn nó là trình quản lý các gói phần mềm trên mac os, có thể cài các phần mềm được hỗ trợ = 1 dòng lệnh mà ko cần phải lên tìm, down và cài phần mềm đó.
Truy cập trang chủ, copy và paste dòng đó vào terminal để cài đặt brew.
Sau khi cài xong thì cài thêm các thư viện sau


brew install ideviceinstaller
brew install carthage
brew install libimobiledevice --HEAD
sudo gem install xcpretty    

Bước 2: Cài python 
Cài python qua brew bằng lệnh sau

brew install python

Bước 3: Cài Node JS
Cài node JS qua brew bằng lệnh sau

brew install node

Chú ý: khi cài node js, nếu cần phân quyền thì chạy lệnh sau

sudo chmod 755  /usr/local/lib/node_modules/

Bước 4: Cài Appium server
Cài thông qua node js bằng lệnh sau
4.1 : Để cài phiên bản mới nhất thì chạy lệnh này

npm install -g appium

- Để cài một phiên bản cụ thể thì chạy lệnh này

npm install -g appium@1.9.1

- Cài các thành phần khác liên quan:

npm install -g ios-deploy
npm install -g deviceconsole

4.2:  Nên cài cả Appium Desktop để có thêm lựa chọn selector element
Vào trang chủ, tải và cài đặt Appium desktop http://appium.io/


Bước 5: Cài đặt Xcode
Đăng ký tài khoản, tải và cài đặt Xcode từ trang chủ https://developer.apple.com/xcode/
Sau khi cài đặt xong, chạy Xcode lên và cấu hình như sau:
5.1 : Vào menu Xcode > Preferences > Locations
Mặc định là combobox Command Line Tools sẽ bị trống, click vào ô đó để hiển thị phiên bản hiện tại của xcode


Bước 6: Cài đặt robot framework và appium library
Chạy các lệnh sau để cài đặt robot FW và thư viện Appiumlibrary

pip install robotframework
pip install robotframework-appiumlibrary
pip install six

Bước 7:  Editor để code robotframework
Mình khuyến khích dùng atom, vì gợi ý keyword khá ok

7.1: down và cài đặt Atom tại trang chủ https://atom.io/
7.2: sau khi cài xong, thì chạy lần lượt các lệnh sau trên terminal

apm install language-robot-framework
apm install autocomplete-robot-framework
apm install hyperclick
apm install hyperclick-robot-framework

Bước 8: Viết test case đơn giản cho ios simulator
Mình sẽ làm 1 testcase đơn giản là tạo mới 1 contact trong ứng dụng contact trên ios simualtor
8.1: Bật ios simulator bằng cách mở Xcode lên, vào menu Xcode > Open Developer Tool > Simulator
8.2: Mở appium desktop để bắt element

cách để bắt element trên ios
8.3: Sau khi đã có các element cần thiết thì viết test case đơn giản


*** Settings ***
Library           AppiumLibrary
*** Variables ***
${REMOTE_URL}          http://127.0.0.1:4723/wd/hub
${PLATFORM_NAME}    iOS
${PLATFORM_VERSION}    12.0
${DEVICE_NAME}    iPhone 8 Plus
${BUNDLE_ID}      com.apple.MobileAddressBook
${AutomationName}    XCUITest

*** Keywords ***
Open App Contact
    Open Application    ${REMOTE_URL}    platformName=${PLATFORM_NAME}    platformVersion=${PLATFORM_VERSION}    deviceName=${DEVICE_NAME}      bundleId=${BUNDLE_ID}

Input Phone Number
    [Arguments]     ${phoneNumber}
    Input Text    //XCUIElementTypeTextField[@name="home"]     ${phoneNumber}

Add New Contact
    Wait Until Element Is Visible    //XCUIElementTypeNavigationBar/XCUIElementTypeButton[2]
    Click Element    //XCUIElementTypeNavigationBar/XCUIElementTypeButton[2]


Add New Information
    Wait Until Element Is Visible     //XCUIElementTypeTextField[@name="First name"]
    Input Text    //XCUIElementTypeTextField[@name="First name"]     nguyen    #input first name
    Input Text    //XCUIElementTypeTextField[@name="Last name"]    hai       #input last name
    Capture Page Screenshot
    Click Element    //XCUIElementTypeCell[@name="add phone"]       #click icon add phone
    Input Phone Number    123456679
    Capture Page Screenshot
    Click Element    //XCUIElementTypeButton[@name="Done"]         #click button Done

Verify add new contact success
    Sleep    3s
    Element Should Be Visible    //XCUIElementTypeNavigationBar[@name="CNContactView"]
    Capture Page Screenshot


*** Test Cases ***
TC1_add new contact
    Open App Contact
    Add New Contact
    Add New Information
    Verify add new contact success
    Close Application


code trên atom nhìn khá thích :D
Kết quả sau khi chạy TC, nó thêm vào contact nguyen hai như trong ảnh
Chú ý:
bundleId lấy ở đâu? Nếu là app mặc định của ios, thì google sẽ có :D ví dụ với ios 12 , còn nếu là app do công ty làm thì hỏi dev cho nhanh nhé 

Hẹn gặp các bạn ở bài tiếp theo!
Bài sau mình sẽ giới thiệu các cách bắt element trên ios và android app nhé!

Automation Testing Android With Robotframework On Mac OS using Appiumlibrary

Xin chào các bạn!
Hôm nay chúng ta cùng nhau tìm hiểu và cấu hình để automation test cho android  với robotframework sử dụng thư viện appiumlibrary
Note: bài viết này mình dùng mac os để cấu hình và chạy.
các thứ cần chuẩn bị như sau:

  1. Cài đặt brew
  2. Cài JDK
  3. Cài Android SDK
  4. Cài Robot framework
  5. Cài Appium
  6. Cài Android Emulator
  7. Editor or IDE code Robot Framework


Bước 1: Cài Brew tại trang chủ
https://brew.sh/
Brew là gì? hiểu ngắn gọn nó là trình quản lý các gói phần mềm trên mac os, có thể cài các phần mềm được hỗ trợ = 1 dòng lệnh mà ko cần phải lên tìm, down và cài phần mềm đó.
Truy cập trang chủ, copy và paste dòng đó vào terminal để cài đặt brew.

Bước 2: Cài JDK bằng terminal
chạy lệnh sau để cài JDK

brew cask install java

Bước 3: Cài android SDK tại Trang chủ https://developer.android.com/studio/ 
Sau khi cài xong, cần vào Config để lấy đường dẫn của android SDK


Tiếp đó thì cần set path cho android SDK và java như sau:
3.1: chạy lệnh sau = terminal


sudo open -a TextEdit  ~/.bash_profile

nhấn password của máy và enter để mở bash_profile bằng textedit trên mac os

thêm các dòng sau vào textedit :
chú ý: xxx là tên user của máy bạn.

export ANDROID_HOME=/Users/xxx/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/tools:$PATH



export JAVA_HOME="$(/usr/libexec/java_home)"
export PATH=$PATH:$JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin

3.2: lưu text edit lại, sau đó chạy lệnh này để update path cho systems

source ~/.bash_profile

Bước 4: Cài robotframework và appiumlibrary
chạy các lệnh sau trên terminal để cài đặt
Note: các keyword và cách dùng của appiumlibrary http://serhatbolsu.github.io/robotframework-appiumlibrary/AppiumLibrary.html

pip install robotframework

pip install robotframework-appiumlibrary

pip install six


Bước 5: Cài Appium.
Các bạn xem lại bài viết tại đây để cài appium nhé



Bước 6: Cài máy ảo android
Các bạn có thể dùng máy ảo của android, nhưng mình thấy khá chậm, mình khuyên dùng genymotion nhé
Note: nhớ tạo account và login rồi tải về


Bước 7:  Editor để code robotframework
Mình khuyến khích dùng atom, vì gợi ý keyword khá ok

7.1: down và cài đặt Atom tại trang chủ  https://atom.io/
7.2: sau khi cài xong, thì chạy lần lượt các lệnh sau trên terminal


apm install language-robot-framework
apm install autocomplete-robot-framework
apm install hyperclick
apm install hyperclick-robot-framework


Bước 8: First testcase for Android using RobotFramework
Chúng ta cùng làm 1 testcase đơn giản cho caculator của android 8 như sau:



*** Settings ***
Library           AppiumLibrary

*** Variables ***
${REMOTE_URL}     http://127.0.0.1:4723/wd/hub    # URL to appium server
${Version Android}    8.0
${name_device}    Android Emulator
*** Keywords ***
Open App Calulator
    Open Application     ${REMOTE_URL}     automationName=UiAutomator2     platformName=Android    platformVersion=${Version Android}    deviceName=${name_device}    appPackage=com.android.calculator2          appActivity=com.android.calculator2.Calculator      noReset=true

*** Test Cases ***
TC1
    Open App Calulator
    Click Element    id=com.android.calculator2:id/digit_9
    Click Element    id=com.android.calculator2:id/op_add
    Click Element    id=com.android.calculator2:id/digit_6
    ${result}=    Get Text    id=com.android.calculator2:id/result
    Should Be Equal As Integers    ${result}    15

Và đây là kết quả sau khi chạy TC



Note:
  1. Trước khi chạy testcase thì cần chạy Appium server + Android Emulator
  2. Trên Mac thì chạy TC của Robotframework bằng terminal như sau:
python -m robot -d a demo.robot

Data Driven Testing in Robot Framework

Chào các bạn!
Đã lâu rồi mình mới quay lại viết blog :D
Tại bài trước, chúng ta đã làm quen với testcase đầu tiên trong robotFW
Hôm nay chúng ta sẽ tìm hiểu về Data Driven Testing trong Robot Framework.
Các thư viện cần có:
  • SeleniumLibrary
    • Cài đặt tại Trang chủ , và xem cách sử dụng tại đây
    • Lưu ý:khi add Lib trong robotFW thì cần viết đúng hoa thường như trang chủ 
  • ExcellentLibrary
  • Tạo file excel chứa data test:

    • Chú ý: Do lib excel được viết từ openpyxl nên chỉ hỗ trợ excel có đuôi xlsx 
    • Chúng ta chú ý các tên cột, tên file và tên sheet trong excel
Ok, chúng ta bắt đầu thôi.
Kịch bản của chúng ta như sau:

  1. vào trang web http://demo.guru99.com/insurance/v1/index.php
  2. nhập email và pass 
  3. click button login
  4. get text của thông báo hiện lên
  5. compare text thông báo mong muốn trong excel và text show trên web
Đây là code của tips này:


*** Settings ***
Library           ExcellentLibrary
Library           SeleniumLibrary
Library            Collections

*** Test Cases ***
login
    Open Browser    http://demo.guru99.com/insurance/v1/index.php    chrome
    Maximize Browser Window
    Open Workbook    Resources/data.xlsx
    Switch Sheet    login
    @{all}=    Read Sheet Data
    @{data}=  Get Slice From List  ${all}  1
    : FOR    ${i}    IN    @{data}
    \    Clear Element Text    email
    \    Input Text    email    ${i[0]}    #first columns in excel
    \    Clear Element Text    password
    \    Input Password    password    ${i[1]}
    \    Click Button    name = submit
    \    Wait Until Element Is Visible    css=div> span
    \    ${lblActual}=    Get Text    css=div> span
    \    Should Be Equal As Strings    ${lblActual}    ${i[2]}
    Close Browser




Chú ý:

  1. các biến như ${i[0]} - do email là cột đầu tiên của excel, nhưng khi lấy về mảng, thì giá trị đầu tiên là 0. nếu email ở cột số 2 thì trong code sẽ là Input Text email ${i[1]}
  2. tại dòng số 13 : @{data}=  Get Slice From List  ${all}  1  : do khi đọc data ở excel, data trả về sẽ lấy cả header của excel, tức là giá trị (email, pass, expected), nên cần dùng lệnh này để bỏ đi giá trị đầu tiên đó. các bạn xem thêm tại đây nhé 
  3. file data.xlsx để trong thư mục Resources
OK, vậy là xong rồi. có thắc mắc các bạn hãy để lại bình luận bên dưới nhé!
Hẹn gặp lại các bạn vào các bài tiếp theo!

First testcase using Robot Framework - test case làm quen robot framework

Chào các bạn!
bài trước, chúng ta đã tìm hiểu và cài đặt Robot Framework. Bài viết này, chúng ta sẽ viết những testcase đầu tiên để làm quen với RF (Robot Framework).
Trước tiên, chúng ta cần cài thư viện selenium cho RF bằng lệnh:

pip install robotframework-selenium2library
Sau đó chạy Ride để viết những dòng code đầu tiên

ride.py
Tại giao diện RIDE, ta tạo mới 1 Project bằng phím tắt Ctrl + N hoặc File -> New Project
Ví dụ, tôi đặt tên là Demo. Tại Demo, ta click vào Library để nhập tên thư viện Selenium2Library  vào. Chú ý, đoạn này cần phải phân biệt hoa, thường.
sau đó click Ok


Tiếp theo, chuột phải vào Tên Project (ở đây là Demo) ta chọn New Testcase. Ở đây, tôi đặt tên TC1


Ở TC1, ta viết như ảnh bên dưới

Nhìn vào TC này, các bạn cũng có thể thấy là TC của chúng ta có các step sau:
1. Mở FB với trình duyệt chrome
2. Nhập user name
3. Nhập password
4. Click vào nút login

Chú ý: Trước khi chạy project, các bạn cần phải có ChromeDriver để chạy selenium. 
Trước tiên cần check version hiện tại của Google Chrome. Chrome của mình version 73, mình chọn ChromeDriver 2.46
Cách nhanh nhất là tải ChromeDriver tại đây, chọn phiên bản phù hợp , giải nén và copy vào thư mục Scripts trong thư mục gốc của Python -> ví dụ của mình là C:\Python27\Scripts




Để hiểu được các ID trong ảnh, vui lòng xem bài viết Locators trong Webdriver
Để Run project, chúng ta có thể dùng phím F8 hoặc click nút Run trên RIDE


Như vậy là chúng ta sau khi cài robot framework xong, cũng đã chạy testcase đầu tiên với robot framework - RIDE .
Cảm ơn các bạn đã theo dõi!


Set up Robot Framework - Cài đặt Robot Framework

Có thể các bạn đã từng nghe qua về Robot Framework. Bạn muốn cài đặt nó? và khi vào trang chủ, mục hướng dẫn cài đặt, các bạn thấy nó như ma trận?
Tôi cũng vậy, thật kinh khủng với những người mới bắt đầu như tôi.
Sau 1 hồi mò mẫm, cũng đã cài thành công và note lại vào đây cho các bạn!

Bài viết này chúng ta sẽ tìm hiểu về Robot Framework và cách cài đặt nó.
  1. Giới thiệu
  2. Cài đặt trên môi trường windows 7

1. Giới thiệu:

Robot Framework là một framework kiểm thử tự động dành cho acceptance testing (test nghiệm thu) và acceptance test-driven development (ATDD). Trong Robot Framework ta có thể sử dụng cách tiếp cận Keyword-driven bên cạnh data-driven hay behavior-driven.

Được sử dụng tốt nhất trên môi trường UNIX, Robot Framework có khả năng dễ dàng mở rộng với những thư viện open-source.

Format file trong Robot Framework có dạng bảng, nên ta có thể view nó dưới dang HTML hoặc TSV, nó có những bảng chính sau

1.1: Ưu điểm

  • Cú pháp rõ ràng dễ hiểu, gần giống với ngôn ngữ tiếng Anh, các từ khóa và đối số được phân cách bởi 4 kí tự trống, các từ khóa được định nghĩa khá giống với ngôn ngữ lập trình Python khi sử dụng 4 dấu cách để phân chia.
  • Có nhiều thư viện hỗ trợ cho nhiều phương thức test khác nhau như Selenium2Library, Android library, OperatingSystem, Swing, Windows GUIs,... (Libraries)
  • Linh hoạt, có thể mở rộng các chức năng thông qua các module Python hoặc Java
  • Report rõ ràng, chi tiết
  • Được hỗ trợ bởi đa số trình editor và có RIDE hỗ trợ (Robot Framework IDE)

2. Cài đặt Robot Framework trên Windows

Để cài đặt được, thì chúng ta cần cài các thành phần sau:
  • Python
  • Robot Framework
  • RIDE (Standalone RobotFramework Test Data Editor)

2.1: Cài đặt Python

Truy cập vào trang download của Python, các bạn có thể dùng python 2 hoặc 3. Ở đây mình dùng python 2



Khi cài đặt, hãy chú ý đoạn này nhé, chọn chỗ này để Python nó set path sẵn cho mình.


Nếu lỡ tay nhấn next mà không chọn chỗ này, thì phải set path bằng tay, xem hướng dẫn tại đây, và chúng ta sẽ thêm 2 dòng này vào path :

C:\Python27\;C:\Python27\Scripts;

2.2: cài đặt Robot Framework

- Mở cmd bằng cách nhấn Ctrl + R, sau đó gõ cmd và Enter


- tiếp đó paste lệnh này để cài RF

pip install robotframework

Ảnh dưới đây là do mình cài rồi nên nó thông báo vậy :D


2.3 cài RIDE

Sử dụng lệnh sau để cài RIDE (chạy trên cmd nhé)

pip install robotframework-ride

Sau khi cài xong thì dùng lệnh 
ride.py
để chạy nó.
Hiện tại bản mới nhất là robotframework-ride-1.7.3.1


Vậy là chúng ta đã hoàn thành cài đặt Robot Framework trên windows - Set up Robot Framework on Windows. Cảm ơn các bạn đã theo dõi.