เนื่องจากที่ผ่านมามีหลายคนถามคำถามเดียวกันเข้ามาค่ะ…
“พี่ๆ ผมไม่อยากให้มันเปิด web browser ขึ้นมาตอนรันเทสอ่ะ?”
“พี่ๆ มีวิธีทำให้ run automated test แบบ background มะ?”
วันนี้พี่พลอยก็เลยจะมาตอบว่า “มีจ้าาาาา” และจะมาสอนการ setup web browser ให้สามารถ run automated test ด้วย Chrome แบบที่ไม่มี web browser แสดงขึ้นมา หรือที่เรียกกันว่า Headless Mode นั่นเองค่า

Headless Mode feature ใหม่ของ Google Chrome

version 59 เป็นต้นไป support  Linux และ iOS
version 60 beta เป็นต้นไป support window ค่ะ
ดังนั้น เข้าไป download และติดตั้ง Google Chrome ตาม version ข้างบนกันก่อนนะคะ

Set Option Headless Mode

ในขั้นตอนของการ Set Environment ของ web driver เราจะ Set Option Headless Mode โดยการเพิ่ม Argument –headless เข้าไปดังนี้ค่ะ

    ${opt}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    Call Method    ${opt}    add_argument    --headless
    Create Webdriver    Chrome    chrome_options=${opt}

ตัวอย่าง Test script สำหรับรันเทส web แบบ Headless mode ตามด้านล่างเลยค่ะ Copy แล้วเอาไป run เลยจ้า

*** Settings ***
Library           Selenium2Library

*** Variables ***
${URL}            https://www.qahive.com
${pageTitle}      QA Hive | โคตรง่าย!!! แค่อ่านอาทิตย์ละ 2 ครั้ง ก็เป็น Automated QA ได้
${timeout}        10s

*** Test Cases ***
Open QA Hive website via chrome headless mode
    ${opt}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    Call Method    ${opt}    add_argument    --headless
    Create Webdriver    Chrome    chrome_options=${opt}
    Go To    ${URL}
    Wait Until Page Contains    ${pageTitle}    ${timeout}
    Capture Page Screenshot
    Close Browser

Test Report

หาก run แล้วจะพบว่าไม่มี Chrome Browser เปิดขึ้นมาให้กวนใจอีกต่อไป แต่เมื่อเข้าไปดูใน Test Report ก็จะพบว่ายังสามารถ Run Automated Test ได้ถูกต้องและสามารถ Capture ภาพมาได้ด้วยค่ะ

Ref: Headless Mode

อันที่จริงเรามี Headless Browser ที่ใช้รันทดสอบแบบ Headless mode โดยเฉพาะอยู่แล้ว นั่นก็คือ PhantomJS ค่ะ แต่หากลูกค้าต้องการให้ทดสอบกับ Web Browser เสมือนจริง ก็ลองเอาวิธีีที่สอนนี้ไปประยุกต์ใช้กันดูนะคะ (^^)

Previous articleDeveloper คือหนึ่งในหัวใจสำคัญของการทำ Automated test ให้สำเร็จ
Next articleมาตั้งชื่อ Test case ให้เหมือนหน้าปกหนังสือกัน