这是我目前如何从DOM
获得每个ElementHandle
属性的方式:
let section: ElementHandle = await page.waitForSelector(".selector-list li");
let tagName = await section.$eval('a', (e) => e.tagName);
但是这里是tagName
。如果我想检查其他属性怎么办?
我不想为每个属性写$eval
。
问题:
如何将ElementHandle
转换为Dom对象,所以我可以
浏览所有属性?
我想将A
作为Dom对象。
答案 0 :(得分:2)
更好的方法是通过page.evaluate在页面上执行代码并返回结果。这样,您可以返回具有值的数组:
const result = await page.evaluate(() => {
const elements = document.querySelectorAll(".selector-list li");
// do something with elements, like mapping elements to an attribute:
return Array.from(elements).map(element => element.tagName);
});
result
将是一个数组,每个元素的属性值为tagName
。
答案 1 :(得分:2)
const elementHandle: ElementHandle = await page.waitForSelector('.selector-list li')
elementHandle.evaluate(domElement => {
domElement.tagName
// etc ...
})