木偶-获取父元素

时间:2019-08-24 21:15:31

标签: javascript puppeteer

我试图根据另一个元素的名称单击一个值(奇数),但是这两个值必须位于特定的父元素中,而该父元素是通过其中的文本获得的。

可以在同一页面上使用相同的类别多次找到以下代码段,因此按类别定位是不可选项。

我首先需要获得一个带有文本“第一个目标”的容器。然后,我需要获取它的父级,在父级中,我需要获取第二个div元素(class parent2)。该元素包含其他元素。让我们想象一下需要获取值200的元素并单击它。

我尝试使用parentElement,parentNode,但是尽管成功检索了子元素,但在获取子元素的父元素时始终会得到“ undefiend”。我只是无法从树的下方找到想要的元素并单击它的父元素。

<div class="group ">
    <div class="parent1 "><span>1st Goal</span></div>
    <div class="parent2">
        <div class="container ">
            <div">
                <div><span>Malaga</span><span class="odds">200</span></div>
                <div><span>No 1st Goal</span><span class="odds">300</span></div>
                <div><span>Las Palmas</span><span class="gll-odds">400</span></div>
            </div>
        </div>
    </div>
    <div></div>
</div>

2 个答案:

答案 0 :(得分:1)

XPath表达式

如果可以使用XPath表达式,则可以使用以下语句:

//div[contains(@class, "group") and contains(., "1st Goal")]/div[@class="parent2"]//span[@class="odds"]

此XPath表达式查询一个div元素,该元素具有类group并在某处包含文本 1st Goal 。然后它将查询类别为div的子项parent2,并在内部查询类别为span的{​​{1}}元素。

在木偶内部的用途

要使用伪造者获得元素,请使用page.$x函数。要单击元素,请使用elementHandle.click

放在一起,代码看起来像这样:

odds

答案 1 :(得分:0)

const parent_node = await child_node.getProperty('parentNode')

你可以试试这个