How to Automate test with Robot framework - up1/soa_group2 GitHub Wiki


วิธีใช้ Robot Frame Work ด้วย Selenium Library

โดยหลักๆ จะแบ่งเป็นส่วนๆ ดังนี้

  1. Settings
  2. Variables
  3. Keywords
  4. Test Cases

ส่วนแรก Settings

สร้างไฟล์ .robot ขึ้นมาแล้วเปิด code editor แล้วใส่ setting ตามนี้

*** Settings ***
Library           Selenium2Library
Test Setup        Start Browser
Test Teardown     Close All Browsers

เป็นการ setting เพื่อบอกว่าเป็นการ import Selenium Library

**หมายเหตุ คำว่า Library กับ Selenium2Library ต้องเว้นวรรคห่างกัน 4 space ขึ้นไปเท่านั้น


ส่วนที่สอง Variables

ส่วนนี้เอาไปสำหรับตั้งตัวแปรและใส่ค่าตัวแปรต่างๆที่จะเอาไปใช้บ่อย หรือ เพื่อให้สวยงาม

*** Variables ***
${TESTADDRESS}    https://www.youtube.com/
${BROWSER}        chrome
${FIVESECOND}     5.0
${TENSECOND}      10.0

**หมายเหตุ การตั้งตัวแปร ต้องเว้นวรรคระหว่างตัวแปรกับค่าที่จะใส่ 4 space ขึ้นไป


ส่วนที่สาม Keywords

Keywords คือการกระทำที่เราตั้งค่าให้ว่า จะให้ทำอะไรบ้างเช่น

*** Keywords ***
Start Browser
    Open Browser    ${TESTADDRESS}    ${BROWSER}
    Maximize Browser Window
Check Rick Roll
    Wait Until Page Contains Element    tag=video    ${TENSECOND}
    Sleep     ${TENSECOND}
    Page Should Contain    Rick Astley - Never Gonna Give You Up
    Page Should Contain    RickAstleyVEVO

จาก code ข้างบน จะทำการสร้าง keyword ชื่อ Start browser ขึ้นมา ซึ่งเมื่อเราเอา keyword ไปใช้จริงจะเกิดการกระทำ 2 อย่าง ดังนี้

  1. เปิดเว็บบราวเซอร์ จาก ตัวแปร ${BROWSER} ซึ่งก็คือ google chrome นั่นเอง
  2. ขยายหน้าต่่างเว็บบราวเซอร์ให้เต็มจอ

**หมายเหตุ การตั้ง keyword นั้นต้องพิมพ์ชื่อ keyword (แนะนำให้ตั้งชื่อแบบCapitalize) และเคาะ enter หนึ่งครั้งเพื่อเว้นบรรทัด เสร็จแล้วก็ต้องเว้นวรรค 4 space (ด้วยการเคาะ spacebar 4 ครั้ง) แล้วจึงใส่ คำสั่งว่า จะให้ทำอะไร และก็ต้องดูว่า คำสั่งนั้นต้องการ argument ด้วยหรือไม่ ถ้ามีเช่น คำสั่ง Open Browser เมื่อพิมพ์ Open Browser เสร็จก็ต้อง เว้นวรรค 4 space แล้วจึงใส่ค่า argument ต่างๆ ดังตัวอย่างข้างต้น


ส่วนที่สี่ Test Cases

Test Cases เป็นส่วนที่เอาไว้ รัน test case ต่างๆ ตามที่เราเขียนลงไป

*** Test Cases ***
ทดสอบค้นหาเพลง never gonna give you up ด้วยการค้นหาแบบเต็มคำ
    Input Text    masthead-search-term    never gonna give you up
    Click Button    xpath=//*[@id="search-btn"]
    Wait Until Page Contains    Rick Astley    ${FIVESECOND}
    Wait Until Page Contains Element    link=Rick Astley - Never Gonna Give You Up
    Click Link     link=Rick Astley - Never Gonna Give You Up
    Check Rick Roll

ทดสอบค้นหาเพลง never gonna give you up ด้วยการค้นหาแบบไม่เต็มคำ
    Input Text    masthead-search-term    never gonna
    Click Button    xpath=//*[@id="search-btn"]
    Wait Until Page Contains    Rick Astley    ${FIVESECOND}
    Wait Until Page Contains Element    link=Rick Astley - Never Gonna Give You Up
    Click Link     link=Rick Astley - Never Gonna Give You Up
    Check Rick Roll

จาก code ดังกล่าว จะ ทำการทดสอบ 2 test case โดยมีชื่อ test case ว่า

  • "ทดสอบค้นหาเพลง never gonna give you up ด้วยการค้นหาแบบเต็มคำ"
  • "ทดสอบค้นหาเพลง never gonna give you up ด้วยการค้นหาแบบไม่เต็มคำ"

**ในหนึ่ง test case ใช้ได้หลาย keyword และสามารถใช้ได้ทั้ง keyword ที่เราสร้างขึ้นมาหรือจะใช้ default keyword ของ Selenium2Library ก็ได้


การใช้ default keyword เบื้องต้น

รู้จัก Locator กันก่อน

ปกติเวลาเราใช้ default keyword เช่น Click Element keyword นี้ต้องการ argument ที่เป็น locator เพื่อบอกว่า จะให้ไปคลิ๊กที่แห่งหนใด

ตัวอย่างการใช้ locator

  • ใช้แบบหาจาก HTML element id เช่น

    Click Element id=search-btn -> <button id='search-btn'>Search</button>

  • ใช้แบบหาจาก HTML DOM element เช่น

    Click Element dom=document.links[11] -> <a href="#">Go to 11 street</a>

  • ใช้แบบหาจาก HTML name attribute เช่น

    Input Text name=search-box lorem ipsum -> <input name='search-box' />

  • ใช้แบบหาจาก CSS Selectors เช่น

    Click Element css=div.my-button -> <div><button class='my-button'></button></div>

  • ใช้แบบหาจาก XPATH เช่น

    Click Element xpath=//*[@id="btn"] -> <div><button id='btn'>Search</button></div>

  • ใช้แบบหาจาก Link Text เช่น

    Click Link link=go top -> <div><a href='#'>go top</a></div>


Document ของ Selenium 2 Library และ อ้างอิง

⚠️ **GitHub.com Fallback** ⚠️