Puppeteer เป็นเครื่องมือสำคัญในการทำงานบนเว็บแบบอัตโนมัติและทดสอบการทำงานของเว็บ เป็นไลบรารี Node.js ที่ให้ API ตำแหน่งสูงสำหรับควบคุมนักท่องโลกไซเบอร์ Chrome ที่ไม่มีหัว ช่วยให้คุณดำเนินการคล้ายกับการคลิกลิงก์ กรอกแบบฟอร์ม และถ่ายภาพหน้าจอ ในบล็อกโพสต์นี้ เราจะสำรวจวิธีการขั้นสูงของ Puppeteer ในการทำงานที่ซับซ้อนมากขึ้น ซึ่งคล้ายกับการกรอกแบบฟอร์มและการโต้ตอบกับการดำเนินงานบนเว็บ วิธีการเหล่านี้จะช่วยให้คุณนำ Puppeteer Chops ของคุณไปยังตำแหน่งที่กำลังจะมาถึง และช่วยให้คุณสามารถทำงานบนเว็บได้หลากหลายขึ้นโดยอัตโนมัติ
เราจะกล่าวถึงสิ่งต่อไปนี้ในโพสต์นี้
• กรอกแบบฟอร์มกับ Puppeteer
• โต้ตอบกับการดำเนินงานของเว็บโดยใช้ Puppeteer
• เคล็ดลับและคำแนะนำในการทำงานกับ Puppeteer
ในตอนท้ายของโพสต์นี้ คุณจะมีความเข้าใจอย่างถ่องแท้เกี่ยวกับวิธีการใช้ Puppeteer เพื่อทำงานขั้นสูง และมีความพร้อมที่จะปรับใช้วิธีการเหล่านี้ในระบบของคุณเอง
การกรอกแบบฟอร์ม
งานทั่วไปอย่างหนึ่งที่คุณอาจต้องทำให้เป็นอัตโนมัติด้วย Puppeteer คือการกรอกแบบฟอร์ม Puppeteer ทำให้การกรอกแบบฟอร์มเป็นเรื่องง่ายด้วยการตกแต่งสไตล์สำหรับการโต้ตอบกับพื้นฐานของแบบฟอร์ม คล้ายกับการป้อนข้อมูลในตำราเรียนและเมนูแบบเลื่อนลง นี่คือภาพประกอบวิธีใช้ Puppeteer เพื่อกรอกแบบฟอร์มเข้าสู่ระบบง่ายๆ
const puppeteer = require(' puppeteer'); (async () => { const cybersurfer = await puppeteer.launch(); const runner = await browser.newPage(); await page.goto(' https//example.com/login'); // Fill out the form await page.type('#username', ' myusername'); await page.type('#password', ' mypassword'); //Submit the form await page.click('button(type=submit)'); // stay for the homepage to load await page.waitForSelector('.homepage- hello'); await browser.close(); })()
ในภาพประกอบด้านบน เราใช้ระบบประเภทเพื่อป้อนตำราเรียนลงในช่องแบบฟอร์ม และระบบคลิกเพื่อส่งแบบฟอร์ม
ความท้าทายประการหนึ่งที่คุณอาจพบเมื่อกรอกแบบฟอร์มคือการจัดการแบบฟอร์มแบบไดนามิกที่สร้างโดย JavaScript ในกรณีเหล่านี้ คุณอาจจำเป็นต้องใช้วิธีการใหม่ๆ คล้ายกับการคงข้อกำหนดที่จะเพิ่มลงในตัวรันเนอร์หรือเรียกใช้ JavaScript เพื่อจัดการแบบฟอร์ม มีเคล็ดลับมากมายในการจัดการกับรูปแบบไดนามิกด้วย Puppeteer
1. ใช้ระบบ 'page.waitForSelector' เพื่อคงไว้ซึ่งพื้นฐานที่จะเพิ่มให้กับนักวิ่ง เพื่อเป็นตัวอย่าง คุณสามารถใช้ “await page.waitForSelector('#dynamic- form')” เพื่อคงไว้ซึ่งฟอร์มไดนามิกที่จะแสดงผลก่อนที่จะโต้ตอบกับฟอร์มนั้น
2. ใช้ระบบ 'page.evaluate' เพื่อรัน JavaScript ในสภาพแวดล้อมของนักวิ่ง สิ่งนี้มีประโยชน์สำหรับการจัดการแบบฟอร์มหรือการรูทข้อมูลจากฟอร์ม
3. ใช้ระบบ 'page.waitForFunction' เพื่อคงเงื่อนไขให้เป็นจริง สิ่งนี้มีประโยชน์ในการคงแบบฟอร์มให้อยู่ในสถานะใดสถานะหนึ่งก่อนที่จะโต้ตอบกับแบบฟอร์ม กฎหมายการกรอกแบบฟอร์มการแก้ไขจุดบกพร่องอาจเป็นเรื่องยุ่งยาก โดยเฉพาะอย่างยิ่งหากแบบฟอร์มนั้นซับซ้อนหรือตัวรันต้องอาศัย JavaScript เป็นอย่างมาก มีกลยุทธ์มากมายในการแก้ไขกฎหมายการกรอกแบบฟอร์ม
· ใช้ระบบ 'page.screenshot' เพื่อจับภาพหน้าจอของนักวิ่งและดูว่าแบบฟอร์มจะเป็นอย่างไรเมื่อกฎหมายของคุณโต้ตอบกับมัน
· ใช้ระบบ 'page.debugger' เพื่อฝ่าฝืนการดำเนินคดีตามกฎหมายของคุณ และตรวจสอบนักวิ่งโดยใช้ Chrome DevTools
เผยแพร่ค่าของตัวแปรและข้อกำหนดของแบบฟอร์มไปยังสื่อเพื่อดูว่ามีอะไรผ่านจุดต่างๆ ในกฎหมายของคุณ ด้วยการทำตามคำแนะนำและกลยุทธ์เหล่านี้ คุณจะมีความพร้อมที่จะรับมือกับแบบฟอร์มแบบไดนามิกและแก้ไขกฎหมายการกรอกแบบฟอร์มกับ Puppeteer
การโต้ตอบกับการดำเนินงานของเว็บ
นอกเหนือจากการกรอกแบบฟอร์มแล้ว Puppeteer ยังสามารถใช้เพื่อแกล้งทำเป็นความสัมพันธ์สโตเนอร์ที่หลากหลายกับการดำเนินงานบนเว็บ สิ่งนี้มีประโยชน์สำหรับการทดสอบฟังก์ชันการทำงานและประสบการณ์การใช้งานเว็บที่ยากขึ้น เช่นเดียวกับการทำงานอัตโนมัติที่คล้ายกับการคลิกลิงก์และปุ่ม สำหรับภาพประกอบวิธีใช้ Puppeteer คลิกลิงค์และรอนักวิ่งหน้าใหม่โหลด
const puppeteer = require(' puppeteer'); (async () => { const cybersurfer = await puppeteer.launch(); const runner = await browser.newPage(); await page.goto('https//example.com'); // Click the link await page.click('a.link-to-runner-2'); // stay for the new runner to load await page.waitForSelector('.runner-2-content'); await browser.close() })()
ในภาพประกอบด้านบน เราใช้ระบบการคลิกเพื่อแสร้งทำเป็นสโตเนอร์คลิกลิงก์ และระบบ 'waitForSelector' เพื่อคงให้นักวิ่งรายใหม่โหลด นอกเหนือจากการคลิกพื้นฐานแล้ว Puppeteer ยังมีสไตล์สำหรับการบลัฟอินพุตสโตเนอร์ประเภทอื่นๆ อีกด้วย คล้ายกับการแฮงค์เหตุการณ์และการป้อนข้อมูลด้วยคีย์บอร์ด เพื่อเป็นตัวอย่าง คุณสามารถใช้ระบบ 'page.hover' เพื่อแกล้งทำเป็นสโตเนอร์ว่ายอยู่เหนือองค์ประกอบ และระบบ 'page.type' เพื่อแกล้งทำเป็นสโตเนอร์กำลังเขียนโค้ดลงในช่องหนังสือเรียน ความท้าทายประการหนึ่งที่คุณอาจพบเมื่อโต้ตอบกับการดำเนินงานบนเว็บคือการทดสอบการดำเนินงานที่ใช้รูปภาพฝั่งลูกค้า ในกรณีเหล่านี้ เนื้อหาของนักวิ่งอาจถูกสร้างขึ้นอย่างแข็งแกร่งด้วย JavaScript ซึ่งทำให้ Puppeteer โต้ตอบกับนักวิ่งได้ยาก ในการแก้ไขปัญหานี้ คุณสามารถใช้วิธีที่คล้ายกับการคงไว้ซึ่งพื้นฐานที่จะเพิ่มลงในรันเนอร์ หรือการรัน JavaScript เพื่อควบคุมรันเนอร์ มีเคล็ดลับมากมายในการทดสอบการทำงานของเว็บที่ใช้รูปภาพฝั่งลูกค้า
1. ใช้ระบบ 'page.waitForSelector' เพื่อคงไว้ซึ่งพื้นฐานที่จะเพิ่มให้กับนักวิ่ง
2. ใช้ระบบ 'page.evaluate' เพื่อรัน JavaScript ในสภาพแวดล้อมของนักวิ่ง สิ่งนี้มีประโยชน์สำหรับการจัดการนักวิ่งหรือการรูทข้อมูลจากมัน
3. ใช้ระบบ 'page.waitForFunction' เพื่อคงเงื่อนไขให้เป็นจริง สิ่งนี้มีประโยชน์ในการคงสถานะนักวิ่งไว้ก่อนที่จะโต้ตอบกับนักวิ่ง เมื่อปฏิบัติตามเคล็ดลับและวิธีเหล่านี้ คุณจะมีความเหมาะสมในการโต้ตอบกับการดำเนินงานบนเว็บอย่างมีประสิทธิภาพโดยใช้ Puppeteer
เคล็ดลับและคำแนะนำ
นอกเหนือจากวิธีที่กล่าวถึงในส่วนก่อนหน้านี้แล้ว ยังมีวิธี Puppeteer ขั้นสูงอื่นๆ อีกมากมายที่คุณสามารถใช้เพื่อทำงานที่ซับซ้อนให้เป็นอัตโนมัติได้ มีตัวอย่างมากมาย
- การทำงานกับ iframes: — iframes เป็น HTML พื้นฐานที่ช่วยให้คุณสามารถนำเนื้อหาจากหน้าเว็บอื่นมาสู่นักวิ่งได้ หากต้องการทำงานกับ iframe ใน Puppeteer คุณสามารถใช้ระบบ 'page.frames' เพื่อรับรายการ iframe ทั้งหมดบน runner และระบบ 'page.frame' เพื่อสลับไปใช้ iframe ที่เฉพาะเจาะจง
- การจัดการป๊อปอัปและโมดัล: — ป๊อปอัปและโมเดลเป็นพื้นฐาน UI ทั่วไปที่ละเอียดอ่อนในการทำให้ Puppeteer เป็นอัตโนมัติ ในการจัดการกับพื้นฐานเหล่านี้ คุณสามารถใช้ระบบ 'page.on' เพื่อฟังเหตุการณ์ป๊อปอัป และระบบ 'page.waitForSelector' เพื่อคงไว้สำหรับโมเดลที่จะแสดง
- การขูดข้อมูล Puppeteer สามารถใช้เพื่อขูดข้อมูลจากเว็บไซต์เพื่อใช้ในระบบของคุณเอง ในการดำเนินการนี้ คุณสามารถใช้ระบบ 'page.evaluate' เพื่อประเมินข้อมูลจากนักวิ่งและโมดูล fs เพื่อเขียนข้อมูลไปยังรถไฟ
นอกเหนือจากวิธีการเหล่านี้แล้ว ยังมีเอฟเฟกต์อีกมากมาย คุณสามารถทำได้เพื่อปรับปรุงความไว้วางใจ ความสามารถ และประสิทธิภาพของนักเชิดหุ่นของคุณ
· ใช้ระบบ 'page.waitFor' เพื่อคงเงื่อนไขเฉพาะให้เป็นจริง สิ่งนี้สามารถเชื่อถือได้มากกว่าการอยู่ในเวลาควอนตัมคงที่
· ใช้ระบบ 'page.setCacheEnabled' เพื่อปิดการใช้งานแคช 'cybersurfer's สิ่งนี้มีประโยชน์สำหรับการทดสอบ เนื่องจากช่วยให้แน่ใจว่านักวิ่งจะโหลดใหม่อยู่เสมอตั้งแต่ต้น
· ใช้ระบบ 'page.setViewport' เพื่อกำหนดขนาดของหน้าต่าง 'cybersurfer' สิ่งนี้มีประโยชน์ในการเพิ่มประสิทธิภาพ เนื่องจากช่วยให้คุณสามารถโหลดเฉพาะเนื้อหาที่มองเห็นได้ในวิวพอร์ต
ด้วยการใช้เคล็ดลับและกลเม็ดเหล่านี้ คุณจะเหมาะสมที่จะนำหุ่นกระบอกหุ่นกระบอกของคุณไปยังตำแหน่งที่กำลังจะมาถึงและทำให้งานที่ซับซ้อนมากขึ้นเป็นไปโดยอัตโนมัติ
บทสรุป
ในบล็อกโพสต์นี้ เราได้สำรวจวิธีการขั้นสูงของ Puppeteer มากมายเพื่อทำให้งานเว็บเป็นอัตโนมัติและทดสอบการทำงานของเว็บ เราได้กล่าวถึงวิธีที่คล้ายกับการกรอกแบบฟอร์ม การโต้ตอบกับการดำเนินงานบนเว็บ และการทำงานกับ iframe และป๊อปอัป
โดยสรุป วิธีการสำคัญบางส่วนที่เรากล่าวถึงได้แก่
• การใช้รูปแบบและคลิกสไตล์เพื่อกรอกแบบฟอร์มและแกล้งทำเป็นอินพุตสโตเนอร์
• การจัดการรูปแบบไดนามิกในลักษณะที่คล้ายกับ 'waitForSelector' และการประมาณค่า
• bluffing เหตุการณ์แฮงค์และการป้อนข้อมูลด้วยคีย์บอร์ดพร้อมแฮงค์และคลาส
• การทำงานกับ iframe และป๊อปอัปโดยใช้เฟรมและสไตล์
• การดึงข้อมูลจากเว็บไซต์โดยใช้การประมาณค่าและโมดูล fs ยังคงอยู่ มีข้อเสนอมากมายทางออนไลน์
หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Puppeteer และพัฒนาสับของคุณต่อไป สถานที่ที่ดีในการเริ่มต้น ได้แก่ Puppeteer attestation, Puppeteer Depository ที่ได้รับอนุมัติบน GitHub และชุมชน Puppeteer บน Stack Overflow ตอนนี้คุณได้เรียนรู้วิธีการเล่นเชิดหุ่นขั้นสูงเหล่านี้แล้ว เราขอแนะนำให้คุณลองใช้มันในระบบของคุณเอง ด้วยการฝึกฝนเพียงเล็กน้อย คุณจะเหมาะสมกับการทำงานบนเว็บที่หลากหลายโดยอัตโนมัติ และทำให้งานของคุณมีประสิทธิภาพและประสิทธิผลมากขึ้น