FindElement(By.XPath("parent::tr"));
怎么了?如何查找父元素如果我不知道子元素和父元素之间存在的元素数量
答案 0 :(得分:0)
使用ancestor::
轴获取元素的父代。
所以在这个例子中
<?xml version='1.0' encoding='utf-8'?>
<root>
<tr class="this">that
<a>
<tr class="these">those
<b>
<c />
</b>
</tr>
</a>
</tr>
</root>
选择元素tr
的第一个c
父对象,使用
FindElement(By.XPath("//c/ancestor::tr[1]"));
这将导致text()
那些
答案 1 :(得分:0)
假设您有以下HTML:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99
<a>
<b></b>
</a>
</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
您在节点b上。
现在 // b ,这将选择当前节点。
//b/parent::a (will select the parent of b which is a)
请注意,b节点有多个祖先,其价格在书本之前,而这个书本在书店之前。
因此,//b/ancestor::price
将选择价格节点,它是节点 b 的祖先。
和//b/ancestor::book
,将选择 book节点,它是节点 b 的祖先。
和//b/ancestor::bookstore
,将选择 bookstore节点,它是节点 b 的祖先。
更新:
如果您希望直接父级带有该标签,则可以使用//b/..
请注意,/ ..将为您提供直接的父节点。 希望这会有所帮助。
答案 2 :(得分:0)
这对我有用
public IWebElement ReturnParentElement(string stringLabel)
{
IWebElement actionLabel = DriverManager.IDriver.FindElements(By.TagName("h3")).Single(t => t.Text.Trim().Contains(stringLabel));
IWebElement parentElement = actionLabel.FindElement(By.XPath(".."));
do
{
parentElement = parentElement.FindElement(By.XPath(".."));
} while (parentElement.TagName != "tr");
return parentElement;
}