gpt4 book ai didi

xpath - 新手到xpath

转载 作者:行者123 更新时间:2023-12-03 17:38:15 26 4
gpt4 key购买 nike

我想知道如何为以下内容创建xpath,在这里我需要单击家伙Test2,这又会打开一个新窗口。

<div class="example">
<a href="#" onclick="parent.navigateFrame('../test/test.aspx', 'Test2'); return false;" target="_self">
<h1>Test2</h1>
</a>
<p></p>
</div>


我对这一切都是陌生的,因此花点时间弄清楚如何形成xpath。
我尝试了以下方法,但均未成功。

(1) xpath(//*[contains(@class, 'example' and @onclick, 'Test2')]

(2) xpath(//*[contains(@class, 'example' and @onclick, 'parent.navigateFrame('../test/test.aspx', 'Test2')')])

有人可以帮我吗?

谢谢

最佳答案

该表达式:

//div[@class='example']/a


有两个步骤(用 /分隔)。第一个将选择 div,它的 class属性包含文本 example。最后一个(这是您想要的元素),将选择该 a中的所有 div元素。

要获取第一个 a元素,可以添加一个谓词:

//div[@class='example']/a[1]


这是一个位置谓词。通过尝试,您需要谓词检查其他内容,例如 onclick属性中的值。在这种情况下,您应该使用:

//div[@class='example']/a[contains(@onclick, 'Test2')]


如您所见,第一个谓词用于限制 div。诸如 //div的表达式会选择文件中的所有 div。谓词限制了这一点。 [@class='example']将该集合简化为具有类属性且完全包含 div'example'组。

但是您不需要 div。您需要一个 a才能单击。因此,现在您可以再进行一步。除非您为路径添加 parent::following::之类的前缀,否则将使用 child::轴,这是默认设置。这意味着每个步骤都将树向下移动到子节点。由于 adiv的子级,因此可以使用 div/a(与 child::div/child::a相同)。同样,它会选择该上下文中的所有 a元素,因此您需要再次限制,为 a元素使用一个或多个谓词。

如果您的 example中除了 div以外可能还有其他类,则可以使用 contains()(例如: <div class="some-class example some-other-class">,但请注意,它可能比您期望的更匹配( example-1my-example匹配 contains(@class, 'example')

关于xpath - 新手到xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24029424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com