我有一个ElementHandle,而不是它的选择器,我如何获取其Parent和Siblings作为ElementHandle。
我知道给定元素选择器,可以使用
const item = document.querySelector(query);
const parent = item.parentElement;
如果我拥有ElementHandle而不是其选择器,该怎么办。请帮忙。
答案 0 :(得分:3)
您可以使用elementHandle.$x()
来评估相对于elementHandle
的XPath表达式,以获得给定元素的父级和同级:
const example = await page.$('#example'); // Element
const example_parent = (await example.$x('..'))[0]; // Element Parent
const example_siblings = await example.$x('following-sibling::*'); // Element Siblings
答案 1 :(得分:2)
试试这个
const parentElement = await exampleElement.evaluateHandle(
(element) => element?.parentElement?.parentElement?.parentElement?.parentElement?.parentElement,
);
答案 2 :(得分:1)
尽管此问题被标记为puppeteer
,但它在Google中以“ Playwright”的名字出现在类似搜索中的情况最明显。
对于使用Playwright的用户,您可以使用类似的解决方案(从answer provided by @grant-miller中采用):
const example = await page.$('#example'); // Element
const example_parent = (await example.$('xpath=..')); // Element Parent
const example_grandparent = (await example.$('xpath=../..')); // Element Grandparent
const example_siblings = await example.$$('xpath=following-sibling::*'); // Element Siblings
答案 3 :(得分:1)
试试这个
const parent_node = await child_node.getProperty('parentNode')