KBTG: AUTOMATION TECH THE SERIES

[Automation Tech the Series] Ep.10 หมดปัญหา Chrome Auto-Update ด้วย Chrome for Testing

Sunflower🌻
KBTG Life
Published in
3 min readJan 16, 2024

--

สวัสดีค่า~ ชาว Automation Tech the Series ทุกคน กลับมาพบกันอีกครั้งกับอีพีใหม่ โดยคราวนี้จะมาเล่าเกี่ยวกับ Chrome for Testing ว่ามีที่มาที่ไปยังไง แล้วมีอะไรดีๆ ใน Chrome ตัวนี้กันบ้าง รวมถึงการนำไปใช้กับ Robot Framework หวังว่าเมื่ออ่านจบแล้วจะสามารถนำไปใช้กันต่อได้นะคะ ♥

Chrome for Testing คืออะไร?

หลายคนที่เคยทำ Automated Testing บน Chrome น่าจะเคยเจอปัญหาเกี่ยวกับการที่ Chrome Auto-Update ซึ่งเมื่อมีการอัพเดตก็จะทำให้ไม่สามารถรัน Test Script ที่เคยทำไว้แล้ว หรือถ้ามีการตั้งรันแบบ Schedule ไว้ก็จะได้รับผลกระทบเช่นกัน เพราะ Driver Version ไม่ตรงกับ Chrome Version

ซึ่งหากเราต้องการให้ Test Script ของเรากลับมาใช้งานได้อีกครั้ง เราต้องเปลี่ยนไปใช้ Driver ที่เวอร์ชันตรงกับ Chrome ของเราที่เพิ่งอัพเดตไป แต่ถึงจะปรับเวอร์ชันของทั้งสองอย่างให้ตรงกันแล้ว เราก็ต้องรองรับความเสี่ยงที่ Chrome และ Driver ตัวใหม่นั้นจะมีปัญหาหรือมีความไม่เสถียร

การทำงานเมื่อ SeleniumLibrary เรียกใช้ Chrome

แต่ในปัจจุบันเราไม่ต้องเจอปัญหาพวกนี้อีกต่อไปแล้ว เพราะเมื่อกลางเดือนมิถุนายน 2023 ที่ผ่านมา ทางทีมพัฒนา Google Chrome ได้ปล่อย Chrome ตัวใหม่ที่ใช้สำหรับการทดสอบโดยเฉพาะ คือ Chrome for Testing นั่นเอง

สามารถไปส่องเพิ่มเติมที่ต้นทางกันได้เลย 👇

โดย Chrome for Testing นั้นจะไม่มี Auto-Update ซึ่งเป็นปัญหาที่เจอกันบ่อยๆ และมีตัว Driver ให้ดาวน์โหลดในที่เดียวกันเลย ไม่ต้องไปหาเวอร์ชันที่ตรงกันเอง สะดวกสุดๆ นอกจากนี้ยังรองรับหลายระบบปฏิบัติการทั้ง Linux, MacOS และ Windows

การดาวน์โหลดและใช้งาน Chrome for Testing ไม่มีผลกระทบอะไรกับ Google Chrome ปกติ สามารถใช้งานแยกกันได้

สามารถตามไปดาวน์โหลดมาเล่นกันได้ที่นี่ 👇

เกร็ดความรู้เพิ่มเติม: Chrome Binary เป็นส่วนหนึ่งของ Chrome ที่ทำให้เราสามารถเปิดบราวเซอร์ได้ และยังทำหน้าที่ในการโหลดและประมวลผลข้อมูล เพื่อให้เราสามารถเข้าถึงและใช้งานเว็บไซต์ได้อีกด้วย

นำไปใช้กับ Robot Framework ได้ยังไง?

ก่อนที่เราจะไปดูวิธีการใช้งานกัน ขอแนะนำ Robot Framework สำหรับใครที่ยังไม่รู้จัก สามารถอ่านพื้นฐานการใช้งานได้ที่นี่เลย 👇

กลับมาที่วิธีนำไปใช้กับ Robot Framework สามารถทำตามขั้นตอนได้ดังนี้

1. Import Library ที่จะใช้คือ SeleniumLibrary

*** Settings ***
Library SeleniumLibrary

2. ดาวน์โหลด Driver กับ Chrome ตามระบบปฏิบัติการที่ใช้งาน จากนั้นสร้างตัวแปรขึ้นมา เพื่อเก็บ Path ของ Driver และ Chrome ไว้

*** Variables ***
${CHROME_BROWSER_PATH} ${EXECDIR}${/}chrome-mac-x64${/}Google Chrome for Testing.app${/}Contents${/}MacOS${/}Google Chrome for Testing
${CHROME_DRIVER_PATH} ${EXECDIR}${/}chromedriver-mac-x64${/}chromedriver
${URL} https://www.google.co.th/?hl=th

3. ตั้งค่า Chrome Options และ Service โดยสามารถกำหนดค่าได้ดังนี้

  • binary_location เป็น ${CHROME_BROWSER_PATH}
  • executable_path เป็น ${CHROME_DRIVER_PATH}
  • selenium version ≥ 4.10 ใช้ Options แต่ถ้าน้อยกว่าใช้ chrome_options

จากนั้นเรียกใช้ Keyword “Create Webdriver” เมื่อกำหนดค่าของ Option และ Service เสร็จแล้ว ก็ใช้คำสั่ง Go To เพื่อไปยัง URL ที่ต้องการได้เลย

*** Test Cases ***
CFT_001 : Start Chrome For Testing
[Teardown] Close All Browsers
${chrome_options} Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys
${chrome_options.binary_location} Set Variable ${CHROME_BROWSER_PATH}
${service} Evaluate sys.modules["selenium.webdriver.chrome.service"].Service(executable_path=r"${CHROME_DRIVER_PATH}")
# [selenium >= 4.10] `chrome_options` change to `options`
Create Webdriver Chrome options=${chrome_options} service=${service}
Go To ${URL}

เมื่อทำ 3 ขั้นตอนก่อนหน้าครบแล้ว ก็จะได้ Test Script ทั้งหมดตามนี้

*** Settings ***
Library SeleniumLibrary

*** Variables ***
${CHROME_BROWSER_PATH} ${EXECDIR}${/}chrome-mac-x64${/}Google Chrome for Testing.app${/}Contents${/}MacOS${/}Google Chrome for Testing
${CHROME_DRIVER_PATH} ${EXECDIR}${/}chromedriver-mac-x64${/}chromedriver
${URL} https://www.google.co.th/?hl=th

*** Test Cases ***
CFT_001 : Start Chrome For Testing
[Teardown] Close All Browsers
${chrome_options} Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys
${chrome_options.binary_location} Set Variable ${CHROME_BROWSER_PATH}
${service} Evaluate sys.modules["selenium.webdriver.chrome.service"].Service(executable_path=r"${CHROME_DRIVER_PATH}")
# [selenium >= 4.10] `chrome_options` change to `options`
Create Webdriver Chrome options=${chrome_options} service=${service}
Go To ${URL}


# run command robot chrome_for_test.robot

เมื่อใช้คำสั่งรัน Robot ก็จะมี Chrome for Testing ขึ้นมาแบบนี้เลย

ก็จบกันไปแล้วค่า~ สำหรับ Chrome for Testing หลังจากนี้การทำเทสบน Chrome ของเราก็จะสะดวกขึ้นกว่าเดิม หวังว่าทุกคนจะสามารถนำไปปรับใช้กับโปรเจคของตัวเองกันได้ และถ้าอยากรู้อะไรเพิ่มเติมเกี่ยวกับการทำเทส สามารถคอมเมนต์ทิ้งไว้หรือติดตาม Automation Tech the Series ในอีพีถัดๆ ไปได้เลย ♥ ไว้เจอกันใหม่ในบทความหน้า บะบ้ายยย~~

ไว้พบกันใหม่กับการผจญภัยครั้งหน้าของ Automation Tech the Series

สำหรับใครที่ชื่นชอบบทความนี้ อย่าลืมกดติดตาม Medium: KBTG Life เรามีสาระความรู้และเรื่องราวดีๆ จากชาว KBTG พร้อมเสิร์ฟให้ที่นี่ที่แรก

--

--