大家好! 我遇到了以下问题: 有一些
SearchContext searchContext;
By by;
可以是WebDriver或WebElement。 假设它们都已经初始化(我们不知道如何); 现在我们想要找到具有这样的xpath的元素,似乎做了以下
List<WebElement> elements = searchContext.findElements(by);
但是,如果searchContext是WebElement并且
by = By.xpath("//div");
它不起作用! (没有找到任何元素),因为我们需要做
by = By.xpath("./div");
(见Locating child nodes of WebElements in selenium) 但是,我怎么提到,我们对于如何初始化没有任何了解;
所以,我的问题是:尽管有上述问题,有没有办法正确找到元素? 我有两个变量:by和searchContext,我应该在searchContext中找到指定的元素。
答案 0 :(得分:0)
你可以在一些帮助器方法中执行它,如果发生这种情况会抛出异常
public List<WebElement> returnSearchContext(By by, SearchContext searchContext){
List<WebElement> elements = searchContext.findElements(by);
if (elements.getSize()>0){
return elements;}
else{
throw new ElementNotFoundException();
}
}
我写这篇文章时无法访问任何IDE,所以我可能会在我的示例代码中做一些错误。例如,我认为异常需要一些参数。但我希望你明白这一点。
答案 1 :(得分:0)
据我了解,现在有办法做到这一点。 唯一的方法 - 正确地手动指定By.xpath:
By child = By.xpath("/div");
By descendant = By.xpath("//div");
如果是WebDriver.isAssignableFrom(searchCOntext.getCLass()), 和
By child = By.xpath("div");
By descendant = By.xpath(".//div");
如果是WebElement.isAssignableFrom(searchCOntext.getCLass())。 恕我直言,这很糟糕。