我有下一个标签结构:
<body>
<parent>
<nested/>
</parent>
</body>
我做了以下事情:
IWebDriver _driver;
var parent = _driver.FindElement(By.Css("parent"));
var nested = parent.FindElement(By.Css("parent nested"));
注意,我只需要通过这种方式查找嵌套元素:首先找到父标签,然后使用父标签作为起点来查找嵌套元素。 但是当我使用逻辑上错误的定位器(“父级嵌套”,因为“父级父级嵌套”一起是错误的定位器)时,parent.FindElement 返回(!)我正确的IWebElement,就像我从DOM 模型的顶部。
有趣的是,当我这样做时
var nested = parent.FindElement(By.Css("parent"));
它抛出元素未找到异常。
我认为我理解错误或只是不知道某些内容。它是如何工作的?如何避免“父父嵌套”问题?
最佳答案
我认为你在这里使用了错误的方式,这就是你收到错误的原因
var nested = parent.FindElement(By.Css("parent"));
你正在做的 -
"first find parent tag, then I use parent as a start point to find parent tag itself"
这是错误的。可以有不同的方法来获得这个 -
- 将父标签作为起点并查找子标签 -
var child= driver.FindElement(By.Css("parent")).FindElement(By.Css("nested"));
- 直接查找子标签 -
var child= driver.FindElement(By.Css("父级嵌套"));
关于C# Selenium Web 驱动程序和 CSS : Start point,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41370411/