Selenium Grid 4 ใช้ W3C WebDriver protocol
จากเดิมที่ยังใช้งาน JSONWire protocol ไป
และยังได้เพิ่มเรื่องของการสนับสนุน DevTools protocol อีกด้วย
แต่ยังอยู่ในช่วงของ experiment feature เท่านั้น

เรื่องที่น่ายินดีมาก ๆ คือ การปรับปรุงเอกสารให้อ่านง่าย เข้าใจได้ง่ายขึ้น

แน่นอนว่า ชัดเจนและทำตามได้ดีกว่าเดิมเยอะ
ลองไปอ่านกัน Selenium Grid 4 Documentation

ใน version นี้แบ่ง component ออกจากกันชัดเจน

ซึ่งประกอบไปด้วยดังนี้ (แต่ก็เพิ่มความซับซ้อนขึ้น)

  • Router
  • Session queue
  • Session map
  • Distributor
  • Event bus
  • Nodes

แสดงดังรูป

ในเรื่องของการติดตั้งทำได้ 4 แบบคือ

  • แบบที่ 1 คือ แยก Hub และ Node ตาม role ปกติ
  • แบบที่ 2 คือ standaone ซึ่งทำงานได้ทุก role ใน instance เดียว
  • แบบที่ 3 คือ distributed mode ซึ่งจะต้องสร้างแต่ละส่วนงานขึ้นมาตามลำดับ ก่อนที่จะทำการเพิ่ม node ดังนี้ Event bus, Session map, Session queue, distributor และ router นี่มันแนวคิด Microservices ชัด ๆ
  • แบบที่ 4 คือ การใช้งานผ่าน Docker

เปลี่ยนจาก Jetty มาเป็น Netty

ส่งผลให้การทำงานรวดเร็วขึ้นแต่ก็ยังต้องการใช้ Memory 1 GB ต่อ 1 process เช่นเดิม
นั่นหมายความว่า ยังคงกิน resource เยอะเช่นเดิม

เมื่อมี request ต่าง ๆ เข้ามา ยังคงเก็บเข้า queue ใน memory เช่นเดิม

ดังนั้นถ้ามีปัญหาก็หายหมดทันที
ซึ่งเป็นอีกหนึ่งส่วนงานที่ยังทำให้ไม่เสถียรอย่างมาก
ถ้ามีการใช้งานพวก database หรือ messaging server เข้ามาช่วยจะทำให้เสถียรขึ้น
แต่ก็เพิ่มความซับซ้อนเช่นเดียวกัน

เมื่อทำการเปลี่ยนแปลง configuration แล้ว จำเป็นต้อง restart เช่นเดิม

ถ้าต้องจัดการจำนวน instance เยอะ ๆ

แนะนำให้ไปใช้ Selenoid (Selenium + Docker) เลยดีกว่า

ไปดูอีก project ที่น่าสนใจคือ Moon

มันคือ Selenium in Kubernetes
น่าจะเป็นอีกทางเลือกที่น่าสนใจ

https://aerokube.com/https://aerokube.com/