Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

บันทึกการติดตั้ง Selenium Grid ในแบบต่าง ๆ

$
0
0

Selenium Grid คือสิ่งที่ช่วยทำให้สามารถ run ชุดการทดสอบแบบอัตโนมัติ บน OS และ browser ต่าง ๆ แบบ distributed และ ขนาน (parallel) ได้ง่ายขึ้น ซึ่งช่วยลดเวลาของการทดสอบระบบลงไปเยอะมาก ๆ ดังนั้นมาดูการติดตั้งกันนิดหน่อย ซึ่งบอกเลยว่า มันไม่ได้ยากเลย แต่ที่เหลือยากหมดเลย !!

เริ่มต้นด้วยโครงสร้างของ Selenium Grid กันหน่อย

ประกอบไปด้วย 2 ส่วนคือ 1. Hub ทำหน้าที่รับ request การทดสอบ และ จัดการส่งไปยัง node ต่าง ๆ 2. Node ทำหน้าที่ทดสอบตาม request ต่าง ๆ ซึ่งแต่ละ node มีความสามารถแตกต่างกันไป ตามความต้องการ แสดงดังรูป
ก่อนติดตั้งให้ทำการ Download Selenium Standalone Server มาก่อน ซึ่งในตัวอย่างจะใช้ selenium-server-standalone-3.9.1.jar

ทำการติดตั้งกันดีกว่า

มาดูขั้นตอนการติดตั้งกัน เริ่มจากทำการสร้าง Hub ก่อน ด้วยคำสั่ง [code] $java -jar selenium-server-standalone-3.9.1.jar -role hub [/code] ต่อมาจึงทำการสร้างและ register node ไปยัง Hub ด้วยคำสั่ง ในตัวอย่าง Hub และ Node อยู่ในเครื่องเดียวกันคือ localhost [code] $java -jar selenium-server-standalone-3.9.1.jar -role node -hub http://localhost:4444/grid/register [/code] แต่สิ่งที่ห้ามลืมสำหรับ Node คือกำหนด Web Driver สำหรับ browser แต่ละชนิดด้วย มิเช่นนั้น Node จะไม่สามารถทดสอบตามที่ต้องการได้ ยกตัวอย่างเช่น ให้ Node ทำการทดสอบผ่าน Google Chrome [code] java -jar selenium-server-standalone-3.9.1.jar -role node -hub http://localhost:4444/grid/register -Dwebdriver.chrome.driver=<path to file chromedriver> [/code] เมื่อทุกอย่างเรียบร้อย สามารถตรวจสอบผ่าน Selenium Grid Web Console ได้ดังนี้ การติดตั้งในรูปแบบนี้นั้น ดูแลรักษาไม่ง่ายเลย ทั้งการ download และติดตั้ง dependency ต่าง ๆ ของแต่ละ node ทั้ง process ของ java ที่อาจใช้ memory จนเกิดปัญหา out of memory ได้ ทั้งการจัดการ node ต่าง ๆ แบบ manual เช่น restart node เมื่อเกิดปัญหา ทั้งปัญหาในการดูแลรักษา ทั้งปัญหาเรื่องของการขยายระบบ

ดังนั้นมาลองติดตั้งด้วย Docker กันบ้าง

โดยที่ Selenium ได้เตรียม Docker image ไว้ให้เรียบร้อย ทั้ง Hub และ Node ชนิดต่าง ๆ เช่น Selenium Chrome และ Selenium Firefox ทำให้ไม่ต้องไปติดตั้งสิ่งต่าง ๆ เองเลย สามารถติดตั้งง่าย ๆ ดังนี้ [code] // Start Hub docker container run -d -p 4444:4444 --name selenium-hub selenium/hub // Start Nodes docker container run -d --link selenium-hub:hub selenium/node-chrome docker container run -d --link selenium-hub:hub selenium/node-firefox [/code] ดูง่ายขึ้นไหมละ ? แต่ปัญหาเรื่องการเพิ่มและลด Node ยังยาก รวมไปถึงการ start/stop/restart Node ก็ยังลำบาก

ดังนั้นมาลองใช้งาน Docker compose กันดีกว่า

โดยทั้ง hub และ node สามารถกำหนดใน services ของ Docker compose ได้เลย ดังนี้ [gist id="0aa82fadbf8f70c157f2ede8e1235e9c" file="docker-compose.yml"] จากนั้นทำการติดตั้งด้วยคำสั่ง [code] $docker-compose up [/code] ถ้าต้องการ scale Node ที่ run Google Chrome ให้เป็น 4 node ทำได้ดังนี้ [code] $docker-compose scale chrome=4 [/code] แสดงผลการทำงานดังนี้ เพียงเท่านี้ก็สามารถติดตั้งและใช้งาน Selenium Grid แบบง่าย ๆ ได้แล้ว ดังนั้นอย่าลืมนำ Selenium Grid ไปใช้งานกันนะครับ Reference Website https://github.com/SeleniumHQ/selenium/wiki/Grid2 https://github.com/SeleniumHQ/docker-selenium/wiki/Getting-Started-with-Docker-Compose

Viewing all articles
Browse latest Browse all 1997

Trending Articles