繁体   English   中英

实验铬特征的问题?

[英]Problems with experimental chromium feature?

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

getComputedAccessibleNode返回一个promise。 我可以让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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM