javascript-实验铬功能有问题吗?

我一直在使用Accessibility Object Model API,我认为尝试在Puppeteer测试中使用它会很酷.

getComputedAccessibleNode返回一个承诺.我可以使ComputedAccessibleNode显示在浏览器控制台中,但是当尝试登录到Puppeteer控制台时,我只是得到一个空对象.

我是否缺少某些内容,或者可能是因为getComputedAccessibleNode仍是实验功能吗?

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless : false, 
    devtools: true,
    args : ['--enable-accessibility-object-model'] 
  });
  const page = await browser.newPage()

  await page.goto('http://localhost:3000/')

  // This shows the ComputedAccessibleNode in the browser console.
  a11y_node = await page.evaluate(() => {
    const checkbox = document.querySelector('label');
    getComputedAccessibleNode(checkbox)
    .then((data) => console.log(data))
  });

  // Why does this show an empty object?
  page.$eval('label', (el) => getComputedAccessibleNode(el))
  .then((data) => console.log(data))

  debugger;
})()

解决方法:

看来ComputedAccessibleNode没有可枚举的属性.

而且puppeteer似乎会对对象进行一些简单的复制,以将其带回到Node上下文中.

使用for ... in,您将能够为您的对象创建适当的副本并将其返回到Node上下文:

a11y_node = await page.evaluate(() => {
    const checkbox = document.querySelector('label');
    return getComputedAccessibleNode(checkbox)
        .then((data) => {
            var obj = {};
            for (key in data) {
                obj[key] = data[key]
            }
            return obj
        });
});
console.log(a11y_node); // logs the object.
上一篇:营销推广软件,抢沙发功能,滑动解锁,自动提交文章评论,使用Puppeteer(一)


下一篇:JavaScript-Puppeteer:关闭地理位置权限请求