【发布时间】:2021-04-08 15:23:57
【问题描述】:
假设我有这个 HTML
<div class="item-wrapper">
<div>
<h6>My Header 1</h6>
<div>
<div>
<div>
<label>
<input type="checkbox" />
<span class="class1">Text 2</span>
<span class="class2"></span>
</label>
<div>
</div>
</div>
<div class="item-wrapper">
<div>
<h6>My Header 2</h6>
<div>
<div>
<div>
<label>
<input type="checkbox" />
<span class="class1">Text 2</span>
<span class="class2"></span>
</label>
<div>
</div>
</div>
如何将任何孩子联系到共同父母,即<div class="item-wrapper">?在这种情况下,属性是类。但是,该属性可以是任何可以识别共同祖先的东西。
var xPathToAncestor = "ancestor::div[@class='item-wrapper']";
var ancestor = child.FindElement(By.XPath(xPathToAncestor)
我尝试了很多组合//ancestor::div[@class='item-wrapper']、.//ancestor::div[@class='item-wrapper'],但没有任何效果。
【问题讨论】:
-
相对于祖先
<div class="item-wrapper">,您正在查看哪个孩子? -
一个问题是您需要具体说明要找到哪两个(或更多元素)的共同祖先。如果您选择 INPUT 或 SPAN,则共同祖先是 LABEL,依此类推。你找不到只有一个元素的“共同”祖先。
-
@JeffC,这是一个很好的观点。这就是为什么我说“任何父母”,因为我希望它成为一个占位符。我所需要的只是一个工作代码,这样我就可以将上面的 xpath 替换为字符串变量。上面的代码只是为了说明我在寻找什么。
-
@Richard77 问题内容是“我如何将任何孩子带到共同的父母那里,即?” 并且答案就是这样。更新 ypur 问题我认为你的问题有很多困惑。在其中你问:“我如何让任何孩子TO到共同的父母那里?”我想你在那里打错字了,意思是说:“我如何从任何孩子到共同的父母?对吗?如果是这样,你能更新你的问题吗?更多的例子可能也帮忙澄清一下。
标签: c# selenium selenium-webdriver xpath webdriver