• puppeteer常规操作代码段


    目录

    一、获取界面二维码并打印处理

    二、等待某个元素消失后 再进行操作

    三、使用puppteer点击搜索框,并输入内容后点击搜索


    一、获取界面二维码并打印处理
    1. const puppeteer = require('puppeteer');
    2. async function findQRCodeByXPath() {
    3. const browser = await puppeteer.launch();
    4. const page = await browser.newPage();
    5. await page.goto('https://example.com');
    6. const xPath = '//img[contains(@class, "qrcode")]'; // 替换为实际的 XPath 表达式
    7. const qrcodeElements = await page.$x(xPath);
    8. if (qrcodeElements.length > 0) {
    9. const qrcodeHandle = await page.evaluateHandle((el) => el.getAttribute('src'), qrcodeElements[0]);
    10. const qrcodeData = await qrcodeHandle.jsonValue();
    11. console.log('二维码:', qrcodeData);
    12. // 在这里可以进行二维码的处理
    13. } else {
    14. console.log('没有找到二维码');
    15. }
    16. await browser.close();
    17. }
    18. findQRCodeByXPath();
    二、等待某个元素消失后 再进行操作
    1. const puppeteer = require('puppeteer');
    2. async function waitForPopupToDisappearAndScroll() {
    3. const browser = await puppeteer.launch();
    4. const page = await browser.newPage();
    5. await page.goto('https://example.com');
    6. const popupSelector = '.popup'; // 替换为实际弹框元素的 CSS 选择器
    7. try {
    8. await page.waitForSelector(popupSelector, { timeout: 5000 });
    9. // 弹框出现,等待其消失
    10. await page.waitForSelector(popupSelector, { hidden: true, timeout: 5000 });
    11. console.log('弹框已消失');
    12. // 执行其他滑动界面操作
    13. await page.evaluate(() => {
    14. // 执行滑动操作的代码
    15. });
    16. } catch (error) {
    17. console.log('没有弹框');
    18. }
    19. await browser.close();
    20. }
    21. waitForPopupToDisappearAndScroll();
    三、使用puppteer点击搜索框,并输入内容后点击搜索
    1. //1. 使用 Puppeteer 打开页面:
    2. const puppeteer = require('puppeteer');
    3. const main = async () => {
    4. const browser = await puppeteer.launch();
    5. const page = await browser.newPage();
    6. await page.goto('https://example.com'); // 替换为目标网页 URL
    7. // 执行后续操作
    8. };
    9. main();
    10. // 2. 点击搜索框并输入关键字:
    11. // 在相应的选择器上执行点击操作
    12. await page.click('input[name="search"]');
    13. // 等待一定时间,确保搜索框被激活
    14. await page.waitForTimeout(1000); // 1秒
    15. // 在相应的选择器上执行输入操作
    16. await page.type('input[name="search"]', '关键字');
    17. // 3. 等待结果出现并滑动界面到底:
    18. // 等待搜索结果出现,这里使用简单的等待时间,也可以根据实际情况使用更复杂的等待条件
    19. await page.waitForTimeout(3000); // 3秒
    20. while (true) {
    21. // 滑动到底部
    22. await page.evaluate(() => {
    23. window.scrollTo(0, document.body.scrollHeight);
    24. });
    25. // 等待一小段时间,让页面加载内容
    26. await page.waitForTimeout(1000); // 1秒
    27. // 检查是否已经滑动到底部(可以根据页面元素,如底部加载提示等判断)
    28. const isEndReached = await page.evaluate(() => {
    29. // 检查页面是否已经滑动到底部的逻辑,例如:
    30. // return document.querySelector('#load-more-button') === null;
    31. // 如果你有特定的元素表示已经到达底部,请适配对应的逻辑
    32. });
    33. if (isEndReached) {
    34. break;
    35. }
    36. }

  • 相关阅读:
    spring循环依赖-不仅仅是八股文
    (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
    java计算机毕业设计流浪动物救助站系统源码+系统+mysql数据库+lw文档
    基于SpringBoot的校园失物招领系统
    使用jupyter的一些常识
    bebel系列- 插件开发
    寒假训练——第二周(BFS)
    linux dolphin为tags协议服务的进程意外退出,kioslave5已经意外关闭
    HR350学习笔记(一)概览
    Java 简介
  • 原文地址:https://blog.csdn.net/xiangzaixiansheng/article/details/132604194