Javascript 木偶演员:如何在不使用evaluate的情况下获取parentNode?
使用Puppeter,我知道如何使用evaluate来获得一些属性,如Javascript 木偶演员:如何在不使用evaluate的情况下获取parentNode?,javascript,node.js,google-chrome-devtools,puppeteer,acceptance-testing,Javascript,Node.js,Google Chrome Devtools,Puppeteer,Acceptance Testing,使用Puppeter,我知道如何使用evaluate来获得一些属性,如parentNode或以前的兄弟姐妹: let id = await page.evaluate(() => { let wantedHref = $('li a').filter( function (index) { return $(this).text().includes("Text that I Want"); })[0]; //get
parentNode
或以前的兄弟姐妹
:
let id = await page.evaluate(() => {
let wantedHref = $('li a').filter(
function (index) {
return $(this).text().includes("Text that I Want");
})[0];
//get parentNode
let id = wantedHref.parentNode.parentNode.parentNode.id;
//get previousSibling
let expandIcon = wantedLink.parentNode.parentNode.previousSibling;
expandIcon.click();
return id;
});
我想知道如何在不使用评估的情况下检索这些类型的属性
您能帮助我吗?elementHandle.getProperty('parentNode'))
您可以使用获取当前文件的属性:
elementHandle.getProperty('parentNode')
您可以使用获取当前文件的属性:
底层的CDP有命令,所以应该也可以在Puppeter中使用它。请参阅我链接的文档-该命令返回一个带有
parentId
的Node
响应,您可以在其中查询另一个DOM.descripeNode
或接受节点id的其他命令。要查找原始节点,可以使用DOM.querySelector
。为什么不使用evaluate?@hardkoded我不想要要使用evaluate cause,调试和暂停会更加困难,无论如何,我想在几个方面执行这种类型的操作way@hardkoded我想用一个特定的类获取所有div,并获取其父类的所有id。您可以进行混合,使用$
获取所有元素,然后求值以获得每个元素的父元素。基础CDP具有命令,因此应该可以在Puppeter中使用它。请参阅我链接的文档-该命令返回一个带有parentId
的Node
响应,您可以在其中查询另一个DOM.descripeNode
或接受节点id的其他命令。要查找原始节点,可以使用DOM.querySelector
。为什么不使用evaluate?@hardkoded我不想要要使用evaluate cause,调试和暂停会更加困难,无论如何,我想在几个方面执行这种类型的操作way@hardkoded我想用一个特定的类获取所有div,并获取其父元素的所有id。您可以进行混合,使用$
获取所有元素,然后进行求值以获取每个元素的父元素。
const current_element = await page.$('#example');
const parent_node = await current_element.getProperty('parentNode');
await parent_node.click();