有没有一种简单的方法可以从另一个元素中找到子元素?我们有一组包含许多模块的容器,我想确保它们显示在正确的位置。
API似乎只有以下方法:
webElement.findElement(s).(By by);
是否有一种简单的方法可以执行以下操作:
webElement.findElement(s)(WebElement webElement);
有没有一种简单的方法可以从另一个元素中找到子元素?我们有一组包含许多模块的容器,我想确保它们显示在正确的位置。
API似乎只有以下方法:
webElement.findElement(s).(By by);
是否有一种简单的方法可以执行以下操作:
webElement.findElement(s)(WebElement webElement);
您只能找到这样的元素的子元素:
IWebElement parent = FindElement(...); //However you want to find the element
IWebElement childDivs = parent.FindElements(By.XPath("div"));
这会为您找到该父元素的所有子 div,您可以调整 xpath 以获得您想要的任何内容。
如果您已经有了孩子并且想要找到父母,您可以执行类似的操作:
IWebElement child = FindElement(...); //However you want to find the element
IWebElement parent = child.FindElements(By.XPath(".."));
然后,您可以进行任何您想要确保父元素是您期望的元素的验证。
我不知道将确定一个元素是否是另一个元素的 WebDriver API。这是一个选项:确定两个元素的 XPath,然后比较 XPath 以确定父级。
您可以使用 Javascript 来确定元素的 XPath。参见例如http://snippets.dzone.com/posts/show/3754。您可以使用WebDriver 的JavascriptExecutor
界面来执行 Javascript。
我没有一个方便的函数来比较 XPath,但也许你可以自己找出那部分。
据说一旦找到注释基本上就被丢弃了,我将创建自己的 ElementLocatorFactory,它类似于 DefaultElementLocatorFactory。由于需要 SearchContext 来创建定位器(由 WebElement 实现),因此我基本上强制首先定位父元素,然后查找我的子元素并在需要的地方捕获异常。
我只是希望我错过了允许此功能的核心 API 中的某些内容。我还在谷歌代码库中添加了一个功能请求。