ทดสอบเว็บแบบง่ายๆ ด้วย Chrome Recorder ไปถึง Puppeteer

สวัสดีครับเพื่อนๆ โปรแกรมเมอร์ทุกๆคน

วันนี้ ผมมีเทคนิคดีๆ มาฝากนะครับ สำหรับคนที่อยากลองทำ Automated Test กับเว็บไซด์ของเรา แบบไม่ต้องเขียนโค๊ตเลยครับ มันคือการใช้ Chrome Dev Tool นะครับ โดยเฉพาะส่วนของ Recorder ตรงนี้แหละ ที่จะช่วยให้เราบันทึกการทำงานต่างๆ บนหน้าเว็บ แล้วเอามาเล่นซ้ำ หรือจะ Export ไปเป็นโค๊ต Puppeteer เพื่อพัฒนาต่อก็ได้ครับ ง่ายมากๆ เลยนะ

มาเริ่มกันเลยครับ ผมจะพาไปดูทีละ Step นะ

1. เข้าไปที่ Chrome Dev Tool กันก่อนเลยครับ

อันดับแรก นะครับ ไปที่หน้าเว็บ ที่เราต้องการจะลองทำ Automated Test นะครับ

จากนั้นให้กด F12 หรือไม่ก็ คลิกขาว ที่หน้าเว็บก็ได้ครับ แล้วเลือก Inspect หรือ ตรวจสอบ นะ

พอกดมาแล้วนะครับ ก็ให้มองหาเมนูที่เขียนว่า Recorder ครับ มันจะอยู่แถวๆ Tab พวก Elements, Console, Network นั่นแหละครับ

2. เริ่มต้นบันทึก ด้วยการ Create a new recorder

พอเจอ Recorder แล้วนะครับ ก็ให้กดที่ Create a new recorder ได้เลย

จากนั้นตั้งชื่อให้มันหน่อยนะครับ เพื่อให้ง่ายต่อการจำ ว่า Recorder ตัวนี้เอาไว้ทำอะไร เช่น "ทดสอบส่งแบบฟร์อม จองโรงแรม" แบบนี้นะครับ

พอกดตั้งชื่อเสร็จแล้ว ก็กดปุ่มสีแดงๆ บันทึก ได้เลยนะ

3. ทำการทดสอบเว็บของเราตามปกติเลยครับ

ตอนนี้ Chrome มันกำลังบันทึกทุกการกระทำของเราอยู่นะครับ

เราก็ทำการทดสอบเว็บไชต์ของเราตามปกติเลยครับ เช่น ลองกรอกข้อมูลต่างๆ ในแบบฟอร์มดูนะครับ

  • กรอกชื่อ ผู้จองห้องพัก
  • กรอกเบอร์โทรศัพย์
  • คลิกเลือกวันที่
  • แล้วก็กดปุ่ม ส่ง หรือ จอง อะไรประมาณนี้นะครับ

ทำไปเรื่อยๆ จนจบขั้นตอนที่เราอยากจะให้มันทดสอบนะ

4. หยุดบันทึก แล้วลองเล่นซ้ำอีกทีครับ

พอเราทดสอบจนจบขั้นตอนแล้วนะครับ ก็กดปุ่ม หยุด (ที่เป็นสี่เหลี่ยมสีแดงๆ) ได้เลย

จากนั้น Chrome มันก็จะแสดงรายการที่เราบันทึกไว้ทั้งหมดเลยครับ

ลองกดปุ่ม Replay ที่มุมขาวมือด้านบนดูนะครับ

เห็นไหมครับ มันจะทำตามสิ่งที่เราทำไว้เป๊ะๆ เลยครับ สะดวกมากๆ นะ

5. ลองแก้ไขข้อมูลที่บันทึกไว้ดูครับ

ทีนี้เรามาลองเปลี่ยนอะไรนิดหน่อยกันดูครับ สมมติว่า เราเคยกรอกชื่อผู้จองไปแล้วตอนแรก เราอยากจะลองเปลี่ยนชื่อดู โดยไม่ต้องบันทึกใหม่ทั้งหมดนะ

ให้ไปที่รายการที่เราบันทึกไว้ครับ จากนั้นทำการแก้ไขชื่อ ผู้จองห้องพัก ดูครับ

// ตัวอย่างของ Step ที่เราแก้ไขใน Recorder
{ 
  "type": "change",
  "selector": "form input[name='bookingName']", // ตัวเลือก selector นะครับ
  "value": "สมหญิง จองเลย"
}

จากนั้นลองกด Replay อีกครั้งดูนะครับ

เห็นไหมครับ มันก็จะใช้ชื่อใหม่ ที่เราแก้ไขเข้าไปแล้ว สะดวกมากๆ เลยนะ

6. ส่งออกเป็นโค๊ต Puppeteer ได้เลยนะครับ

นี่แหละครับ คือจุดเด่นของเจ้า Recorder ตัวนี้เลย

หลังจากที่เราบันทึกแล้วก็ปรับแต่งจนพอใจแล้ว เราสามารถ Export สิ่งที่เราบันทึกนี้ไปเป็นโค๊ต JavaScript สำหรับ Puppeteer ได้เลย เพื่อเอาไปพัฒนาต่อ หรือเขียนโค๊ตเพิ่มความซับซ้อนให้มันได้ครับ

ไปที่รายการที่เราบันทึกไว้นะครับ มองหา รูปไอคอนดาวน์โหลด (Export) ได้เลย

จากนั้นให้เลือกเป็น Puppeteer ครับ

Chrome มันก็จะสร้างโค๊ต JavaScript ออกมาให้เราเลยนะ พร้อมเอาไปใช้กับ Puppeteer ทันทีเลย

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  // ไปที่หน้าเว็บที่เราทดสอบนะครับ
  await page.goto('https://example.com/test-form'); // ลิงค์นี้เป็นตัวอย่างนะ

  // ทำตาม Step ที่บันทึกไว้ได้เลย
  await page.waitForSelector('input[name="bookingName"]');
  await page.type('input[name="bookingName"]', 'สมหญิง จองเลย');
  await page.type('input[name="contactNumber"]', '0812345678');
  // ... อื่นๆ ที่เราได้บันทึกไว้

  await Promise.all([
    page.waitForNavigation(),
    page.click('button[type="submit"]'),
  ]);

  await browser.close();
})();

สำคัญมากนะ เรื่องข้อมูลส่วนตัว (PDPA): เวลาเราทดสอบอะไรแบบนี้ โดยเฉพาะกับระบบจริง หรือมีข้อมูลที่ละเอียดอ่อนมากๆ เนี่ยครับ อย่าเผลอบันทึกข้อมูลจริง หรือข้อมูลที่ละเอียดอ่อนมากๆ ลงไปในการทดสอบนะครับ เพราะไฟล์ที่เรา Export ออกมามันเป็นโค๊ตตรงๆ เลยนะ มันอาจจะหลุดออกไปได้ง่ายๆนะครับ ควรใช้ข้อมูลทดสอบ (test data) ที่ไม่มีความสำคัญนะครับ เพื่อความปลอดภัยนะ

7. อยากลอง ดาวน์โหลดไฟล์ตัวอย่างไปทดสอบไหมครับ

เพื่อนๆคนไหนอยากจะลองทดสอบจากไฟล์ที่ผมได้ลองทำทดสอบให้ดูในบทความนี้ สามารถดาวโหลดไฟล์แล้วนำไป Import เข้า Chrome ของเพื่อนๆดูได้นะครับ

จากนั้นไปที่หน้านี้ เพื่อลองทดสอบดูกันครับ: แบบฟร์อมสำหรับทดสอบ Automated Test (ลิงค์นี้ เป็นตัวอย่างนะครับ ผมไม่ได้มีเว็บให้ทดลองจริง แต่ถ้าเพื่อนๆมีเว็บก็ลองใช้ได้เลยนะ)

สรุปนะครับ

เทคนิคนี้ช่วยให้เราเริ่มต้นทำ Automated Test ได้ง่ายมากๆ เลยนะครับ โดยไม่ต้องเขียนโค๊ตแม้แต่บรรทัดเดียวในตอนแรก เหมาะสำหรับ มือใหม่ หรือคนที่ต้องการสร้าง Prototype ของ Test Flow อย่างรวดเร็วมากๆ เลยครับ และยังสามารถต่อยอดไปสู่การเขียนโค๊ต browser-automation ด้วย Puppeteer ได้อย่างไม่มีรอยต่อเลยนะครับ

ลองเอาไปใช้กับการทดสอบ กับระบบของเพื่อนๆดูนะครับ ผมว่ามันมีประโยชน์มากๆ เลยครับ

อ้างอิง: * Chrome DevTools Recorder

Read more

บทบาทของเครื่องบินขับไล่ F-Series ในสมรภูมิกลางอากาศ: การปิดล้อม, กู้ภัย, และการอัปเกรด

บทบาทของเครื่องบินขับไล่ F-Series ในสมรภูมิกลางอากาศ: การปิดล้อม, กู้ภัย, และการอัปเกรด

เจาะลึกปฏิบัติการปิดล้อมอิหร่าน การช่วยเหลือ F-15E และการอัปเกรด F-35 ของอิสราเอล ท่ามกลางความตึงเครียดในตะวันออกกลาง.

By ทีมงาน devdog
งบประมาณปี 2570: ยุทธศาสตร์ใหม่เพื่อคนไทย รับมือเศรษฐกิจผันผวน

งบประมาณปี 2570: ยุทธศาสตร์ใหม่เพื่อคนไทย รับมือเศรษฐกิจผันผวน

เจาะลึกงบประมาณปี 2570 รัฐบาลมุ่งแก้ปัญหาประชาชน ใช้แนวคิด Zero-Based Budgeting พร้อมไทม์ไลน์และ 9 แผนงานบูรณาการเพื่อขับเคลื่อนเศรษฐกิจอย่างยั่งยืน.

By ทีมงาน devdog
FANTASY LIFE i: The Girl Who Steals Time มาแน่! สโลว์ไลฟ์ RPG บนมือถือ ซัมเมอร์นี้!

FANTASY LIFE i: The Girl Who Steals Time มาแน่! สโลว์ไลฟ์ RPG บนมือถือ ซัมเมอร์นี้!

เตรียมพบกับ FANTASY LIFE i: The Girl Who Steals Time เกม slow-life RPG จาก LEVEL-5 บนมือถือซัมเมอร์นี้! ใช้ชีวิตชิลล์ ๆ สำรวจโลกแฟนตาซี พร้อม Cross-play และ Cross-save.

By ทีมงาน devdog
Oppo Pad 5 Pro เผยสเปกสุดจัด! แท็บเล็ตเรือธงจอใหญ่ 13.2 นิ้ว พร้อมขุมพลัง Snapdragon 8 Elite Gen 5 ก่อนเปิดตัว

Oppo Pad 5 Pro เผยสเปกสุดจัด! แท็บเล็ตเรือธงจอใหญ่ 13.2 นิ้ว พร้อมขุมพลัง Snapdragon 8 Elite Gen 5 ก่อนเปิดตัว

เผยสเปก Oppo Pad 5 Pro แท็บเล็ตเรือธงจอ 13.2 นิ้ว พร้อมขุมพลัง Snapdragon 8 Elite Gen 5 แบต 13,380mAh และ Android 16 ก่อนเปิดตัว 21 เม.ย. 2026

By ทีมงาน devdog