Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 木偶演员:如何在不使用evaluate的情况下获取parentNode?_Javascript_Node.js_Google Chrome Devtools_Puppeteer_Acceptance Testing - Fatal编程技术网

Javascript 木偶演员:如何在不使用evaluate的情况下获取parentNode?

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

使用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 = 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();