ช่วงนี้หากใครตามข่าวสารการทำ automate test โดยเฉพาะการเทส Web Application น่าจะเคยได้ยิน เทส framework ตัวใหม่ๆ อย่าง cypress หรือ Katalon กันมาบ้าง โดยหลายเจ้าพยายามแก้ไขปัญหาความไม่เสถียรของการเทส Web Application

 

ทำไม Selenium ไม่เสถียร

  • Selenium ใช้งาน Web driver เป็นหลัก ปัญหานี้ทำให้ ผู้ใช้งานต้องคอยมาอัพเดท Web driver อยู่บ่อยๆ หากลืม เทสอาจรันไม่ได้ ใครใช้ Chrome จะรู้ดีว่าอัพเดทจนตามแทบไม่ทันครับ
  • พอมี Web driver ก็ทำให้การส่ง command เป็นการส่งจาก Test Script –> Web driver –> Web browser อีกที ทำให้การสั่งงานต้องผ่านหลายขั้นตอนนั่นเอง
  • Wait ของ Robot framework Selenium ยังเน้นไปที่การรอการแสดงผลหน้าจอเพียงอย่างเดียว หากเว็บเพื่อนๆเป็น Ajax หรือ Single page application แล้วล่ะก็บอกเลยว่า ปวดหัวแน่นอน

 

Robot framework Puppeteer คืออะไร

ถ้าให้สรุปง่ายคือ Robot framework Puppeteer เป็น Library ที่สร้างมาเพื่อตอบโจทย์ 3 อย่าง

  1. เร็วกว่า เนื่องจากเป็นการใช้งาน native library ตรงๆ ไม่มี Layer มาขั้นอย่าง Selenium ทำให้การทำงานเป็นไปได้อย่างราบรื่น
  2. ง่ายกว่า Robot framework Puppeteer ถูกออกแบบมาให้ใช้งานได้ง่าย ไม่เหมือนการใช้งาน Library ภาษาอื่นๆที่ต้องเข้าใจหลักการเขียนโปรแกรมค่อนข้างมาก (คุณเขียน Selenium ได้ก็เขียน Puppeteer ได้)
  3. เสถียรกว่า โดย Puppeteer สามารถ control network event ทำให้การ Wait แบบเก่าๆ หรือ Sleep ที่ต้อง work around ไม่จำเป็นอีกต่อไปครับ อีกทั้งยังเหมาะกับการใช้ทดสอบ Application สมัยใหม่ที่เขียนด้วย Angular หรือ React มากกว่าครับ

Robot framework Puppeteer เป็น Library ที่ทำมาครอบ Puppeteer เพื่อให้ Robot framework ใช้งานได้ง่าย โดย Keyword ต่างๆจะเหมือนกับการใช้งาน Selenium Library เลย ทำให้ใครที่ใช้งาน Selenium Library อยู่แล้วสามารถปรับตัว รวมไปจนถึง การเปลี่ยนมาใช้ Puppeteer ทำได้ง่ายมากๆครับ เช่น

Selenium:

Puppeteer:

จะเห็นว่าไม่มีความแตกต่างกันเลยครับ

โดยทีมพัฒนาจะใช้วิธีเพิ่มความสามารถของ Puppeteer ไปที่ Keyword เดิม หรือเพิ่มเติม Keyword ใหม่ๆ เข้ามา ทำให้การเปลี่ยนมาใช้งานนั้นแทบไม่ต้องแก้ไขอะไรเลยครับ

 

เริ่มการติดตั้ง

รัน Command เดียวเลยครับจบ ง่ายๆ ไม่ต้องโหลด Chrome driver หรือ Setup Path เพิ่มเติมให้ปวดหัว

ตัวอย่าง Puppeteer Test Script

โดย Scrip จะทำการเปิดหน้า Login และกรอก username และ password และ Submit login form
แต่สิ่งที่เพิ่มเข้ามาคือ Run Async Keywords และ Wait For Response URL

  • Wait For Response URL จะเป็นตัวช่วยรอจน Response การ login สำเร็จ และถูกส่งข้อมูลกลับมาที่ Browser ของเรานั่นเอง
  • Run Async Keywords Keyword ที่จะทำให้ Keyword ที่ต้องการรันภายใต้ Keyword นี้ทั้งหมดทำงานแบบพร้อมกันแบบ Asynchronous จากตัวอย่างจะหมายความว่า เราสั่งให้ Browser click element ปุ่ม login ไปพร้อมๆกับรอว่าเมื่อไหร่ login จะสำเร็จนั่นเอง ทำให้การทำงานไวมากขึ้น และเร็วกว่าการไปเช็คการแสดงผลของ Element บนหน้าจอนั่นเอง

 

Download Example Script

ใครอยากลองใช้งาน Download Example Script จาก link นี้ได้เลยทีมงามเตรียมไว้เพียบเลยครับ

 

Credit cover image: Designed by Dooder / Freepik

1 COMMENT

  1. […] เนื่องจากเป็น Opensource เราเลือกที่จะใช้งาน Github เป็นที่เก็บ source code ใครสนใจลอง checkout มาดูกันได้ครับ Robot Framework Puppeteer เป็น web test library สนใจรายละเอียดเพิ่มเติม […]