我一直在使用Accessibility Object Model API,我认为尝试在Puppeteer测试中使用它很酷。
ComputedAccessibleNode
返回一个承诺。我可以让getComputedAccessibleNode
显示在浏览器控制台中,但是当尝试登录到Puppeteer控制台时,我只是得到一个空对象。
我错过了什么吗,还是因为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;
})()
仍是实验功能?
JAVA_HOME
答案 0 :(得分:3)
似乎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.
没有可枚举的属性。
并且操纵up的人似乎对对象进行了一些简单的复制,以将其带回到Node上下文中。
使用for ... in
,您将能够正确复制对象并将其返回到Node上下文:
{{1}}