Puppeteer
Posted in: autotest

借助Puppeteer发挥Headless浏览器的强大功能

背景:服务器抓取页面时触发了频控机制。

解决方案:Chromium 推出 Headless 功能,可实现无头浏览器的访问,借助 Puppeteer 提供的高级 API 可控制 Chromium。

首先新建目录并安装框架,国内用户可输入以下命令来安装,否则可能无法下载chrominum包:

PUPPETEER_DOWNLOAD_HOST=https://npm.taobao.org/mirrors npm i puppeteer

其次,在项目目录下,新建 example.js 测试用例,输入以下内容:

const puppeteer = require('puppeteer');

(async () => {
  // --no-sandbox、--disable-setuid-sandbox 允许以 root 身份允许
  const browser = await puppeteer.launch({headless: true, timeout: 50000, args: ['--no-sandbox', '--disable-setuid-sandbox']});
  const page = await browser.newPage();

  // 打开页面,等待加载完成
  await page.goto('https://search.ickey.cn/?keyword=TPS63030DSKR&upload=', {
    waitUntil: 'networkidle2'
  });

  // 获取 element 元素,并执行点击事件
  const verifyElement = await page.$('#checkGtCache');
  await verifyElement.click();

  // 等待页面跳转(这里必须执行,否则频控验证不通过)
  await page.waitForNavigation();

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

运行

node example.js

有关更多 Puppeteer 的使用,请参考:

发表评论

电子邮件地址不会被公开。 必填项已用*标注