![open-close-browser-cover](https://i0.wp.com/www.qahive.com/wp-content/uploads/2020/07/open-close-browser-cover.png?resize=696%2C583&ssl=1)
สำหรับใครที่ใช้ Selenium ในการเทสเว็บ การเปิดปิด Browser ระหว่างการรันเทส ซึ่งนับเป็นเรื่องปกติที่จำเป็นต้องทำกัน โดยเรามักจำเป็นต้องเปิดปิด browser เมื่อรันเทสเสร็จแต่ละข้อ เพื่อเป็นการ Clear Cookie, Cache ของเบราเซอร์ป้องกันไม่ให้เทสแต่ละข้อส่งผลกระทบกันเอง
เปิด / ปิด Browser มีปัญหาหลักๆคือ ขั้นตอนนี้ที่ใช้เวลาพอสมควรเลย โดยเปิด browser ครั้งแรกกินเวลาประมาณ 6 วินาที เปิด tab เพิ่มใช้ประมาณ 4 วินาที ลองดูตัวอย่าง code กัน
![Image for post](https://i0.wp.com/miro.medium.com/max/597/1*jzLQSKjVx338a_hZUfjQHQ.png?w=696&ssl=1)
แล้วทำไม Selenium ถึงช้า
![Image for post](https://i0.wp.com/miro.medium.com/max/798/1*KJPr5ei8C8Tr5ge4dHBF1w.png?w=696&ssl=1)
เราต้องมาดูที่ Architecture ของ Selenium ครับ จากรูปด้านบน จะเห็นว่า Test Script ที่เราเขียนจะมีการใช้งาน Selenium client library เพื่อไปคุยกับ Web Driver หลังจากนั้น Web Driver ถึงจะเป็นคนแปลงคำสั่งไปควบคุม browser ของเราอีกทีครับ
![Image for post](https://i0.wp.com/miro.medium.com/max/555/1*jH6xCS5ifHknxtqNwr4K2w.png?w=696&ssl=1)
เนื่องจาก Puppeteer ใช้การควบคุม Browser โดยตรงผ่าน Devtools protocol นั่นทำให้ overhead ต่างๆหายไปนั่นเอง แถมโค้ดยังเหมือนกันด้วยนะ
![Image for post](https://i0.wp.com/miro.medium.com/max/597/1*JqYJIu7l8-6x0xx6vSuwjQ.png?w=696&ssl=1)
จากตัวอย่างจะเห็นว่า Puppeteer เร็วกว่าถึง 2 เท่า ใช้เวลาไปเพียง ~11 วินาที เทียบกับ Selenium ที่ ~21 วินาที
หากเราเทียบเฉพาะ Open browser step ผลจะออกมาตามนี้ครับ
Puppeteer เปิด Browser รอบแรกใช้เวลาไป 3 วินาที และ รอบสอบที่ 2 วินาที
Selenium เปิด Browser รอบแรกใช้เวลาไป 6 วินาที และ รอบสอบที่ 4 วินาที
ใครสนใจอยากลองใช้งาน https://qahive.github.io/robotframework-puppeteer.github.io/