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 ตอนนี้คุณได้เรียนรู้วิธีการเล่นเชิดหุ่นขั้นสูงเหล่านี้แล้ว เราขอแนะนำให้คุณลองใช้มันในระบบของคุณเอง ด้วยการฝึกฝนเพียงเล็กน้อย คุณจะเหมาะสมกับการทำงานบนเว็บที่หลากหลายโดยอัตโนมัติ และทำให้งานของคุณมีประสิทธิภาพและประสิทธิผลมากขึ้น