gpt4 book ai didi

c# - XPath 查找子元素的父元素

转载 作者:行者123 更新时间:2023-12-03 23:37:23 25 4
gpt4 key购买 nike

我有这样的结构:

<div class="Container">
<div class="HighlightContainer">
<div class="NodeTextHighlightContainer">
<span class="TreeItemSelected">Products</span>
</div>
<button class="ContainerSelectedMenu" type="button"></button>
</div>
</div>

由于 DOM 的行为方式并试图保持动态,我只能定位包含文本产品的范围。使用类似的东西:
Driver.FindElement(By.XPath("//div[contains(@class, 'Container')]/descendant::span[text() = 'Products']"));

但是,我需要针对基于该 span 元素的 class="ContainerSelectedMenu" 的按钮,最好的方法是什么?类似于获取 Container 子元素的父 div 然后找到按钮元素。

最佳答案

我已经找到了不同的方法来通过上下遍历来做到这一点,这很好用,但我现在更喜欢这种方法:

xpath = "//div[contains(@class, 'Container') and descendant::span[text() = 'Products']]//button";

基本上,您将具有 text() = 'Products' 的后代作为您真正想要的 div 标记(即父代)的要求的一部分。然后您可以使用 //button//button[@class='ContainerSelectedMenu'] 轻松搜索按钮

您实际上在这里不需要 descendant 轴,因此可以通过以下方式对其进行简化:
xpath = "//div[contains(@class, 'Container') and .//span[text() = 'Products']]//button";

用英语...
  • 找到一个 div
  • 1. 有一个包含“Container”和
  • @class
  • 2. 有一个带有文本 `Products
  • 的后代 span 元素
  • 查找 div 的后代,即 button
  • 关于c# - XPath 查找子元素的父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48531088/

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