用 Puppeteer 获取页面元素的样式

原创 2019年 4月 25日
标签: PUPPETEER
本文发布至今已有5年零209天,可能不再适用,请谨慎对待。

先打个广告:欢迎关注我的公众号,参与 文史大挑战 趣味题目。使用方法见 这篇文章

公众号:晚花行乐

正文开始:

使用 puppeteer 寻找到某个元素后,往往希望检查此元素的某种样式,对应于 chrome 开发者工具里看到的是该元素的 computed style. 使用 puppeteer 可以比较方便的得到元素的样式,本文列出了一个可行的方法。

在 Chrome 的开发者工具里,可以查看页面元素的 Computed Style,如下图:

获取样式函数

各种浏览器都提供了 get​Computed​Style 函数 ,可以用来获得某元素的样式。语法如下:

var style = window.getComputedStyle(element);

element 是通过 querySelector 取得的页面元素对象,比如

var element = document.querySelector('div');

puppeteer 的用法

使用 page.$eval() 或者 page.evaluate() 就能在特定元素上执行 get​Computed​Style 函数,代码如下:

page.$eval('.someClass', 
  (x) => {return JSON.parse(JSON.stringify(window.getComputedStyle(x)))})

或者

const elemHandle = await page.$('.someClass');
const style = await page.evaluate(
  (x) => {return JSON.parse(JSON.stringify(window.getComputedStyle(x)))}, 
  elemHandle
  );

在目前的 puppeteer 版本中,还需要 JSON.parseJSON.stringify 来回处理一下,才能得到正确的 Computed​Style 对象。

举例

比如想要检查某个元素的宽高值符合要求,可以这么写:

it('尺寸符合 450x150', async function () {
    const style = await page.$eval('.someClass', 
  (x) => {return JSON.parse(JSON.stringify(window.getComputedStyle(x)))})
    expect(style.width).to.equal('450px')
    expect(style.height).to.equal('150px')
  })

上面这段代码是完整框架的一部分,如果要正常执行这段代码,还需要参考 Puppeteer 实现 web 自动测试

其他测试框架

这篇文章介绍了其他框架(包括 Testcafe、Cypress等)如何实现获取页面元素的样式表。

如果您对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

标签: PUPPETEER
给个免费的赞吧~

精彩评论

本站 是个人网站,采用 署名协议 CC-BY-NC 授权。
欢迎转载,请保留原文链接 https://www.lfhacks.com/tech/puppeteer-elememt-style/ ,且不得用于商业用途。