เนื่องจากที่ผ่านมามีหลายคนถามคำถามเดียวกันเข้ามาค่ะ…
“พี่ๆ ผมไม่อยากให้มันเปิด 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 เสมือนจริง ก็ลองเอาวิธีีที่สอนนี้ไปประยุกต์ใช้กันดูนะคะ (^^)