puppeteer

阿里云2000元红包!本站用户参与享受九折优惠!

puppeteer自动化测试框架简介:

puppeteer是由google开源得一款通过控制devtools来实现对chromium浏览器得控制,可进行有界面或者无界面(headless)的ui自动化与高级爬虫

应用场景

由于puppeteer可以监听浏览器中很多的事件,比如:request,response,console等,所以puppeteer可以用于对于需要监控页面得各个事件得需求,例如页面是否有失败请求,控制台输出信息

通常我们使用selenium,bs4或者scrapy进行爬虫,虽然selenium操作浏览器非常简单与便捷,但是在加载页面时候通常有一些js事件是不会触发的,而bs4或者scrapy又对于浏览器操作不是很灵活,这时候puppeteer就解决了这两个问题,既能方便灵活得操作浏览器又可以在浏览器将页面得事件完全触发得情况下进行爬虫,完全模拟真实操作

selenium时代我们可以通过执行js脚本来获取浏览器时间线,但是运行在服务器上通常都是用phantomjs来驱动浏览器,但是由于js加载问题,会导致使用phantomjs获取的时间线都比正常得要少很多,但是puppeteer同样可以获取浏览器访问各个页面的时间线,并且数据比较准确,并且不需要执行js语句,所以可以基于puppeteer进行页面性能分析

puppeteer可以进行有界面或者无界面(headless)的ui自动化

selenium时代在服务器或者pc上还无法完成或者很难完成移动端h5得自动化测试(新版本得selenium与chrome点击F12基本不会成功),但是puppeteer可以很平滑切换到h5页面,完成更丰富得测试

前景

由google chrome团队进行开发和维护,效率和质量更高

phantomjs已经宣布不在进行更新,所以headless就成为puppeteer与chromium得优势

puppeteer很好得支持模拟键盘输入、截图、表单提交等特殊场景操作,使得puppeteer能够更好得完成ui自动化测试

puppeteer是nodejs得一个库,目前官方还没有提供其他语言的api,所以只能使用nodejs来编写测试脚本


Puppeteer 是 Google 官方的一个开源项目

https://github.com/GoogleChrome/puppeteer

Puppeteer 提供了一套 nodejs 的类库用于操作 chrome / chromium,基于 DevTools 协议。

目前只有 nodejs 语言支持


典型应用场景

生成网页截图、PDF

爬取 SPA (单页网页应用)页面的内容。我觉得这个功能是给 Google 爬虫用来处理 vuejs, reactjs,angular 的 SPA 页面的。

从网页中提取内容。对于动态渲染的页面内容,非常有优势

自动化表单提交,UI 测试,模拟键盘输入等

自动化测试


在线调试工具

https://try-puppeteer.appspot.com/


1. 截取当前网页的整个界面

fullPage: true

例如:

await page.screenshot({path: ‘rank.png’, fullPage: true});


2. puppeteer 截图中文乱码

安装中文字体即可解决

$ sudo apt-get install language-pack-zh-hant language-pack-zh-hans

$ sudo apt-get install fonts-droid-fallback ttf-wqy-zenhei ttf-wqy-microhei fonts-arphic-ukai fonts-arphic-uming


3.禁用 JS 的执行

在 goto 前加上

  await page.setRequestInterception(true);

  page.on(‘request’, request => {

    if (request.resourceType() === ‘script’)

      request.abort();

    else

      request.continue();

  });

https://www.jianshu.com/p/d68b97c5fba5

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
Python
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论