Selenium:在searchContext中查找元素

时间:2012-08-03 20:47:04

标签: xpath selenium webdriver

大家好! 我遇到了以下问题: 有一些

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中找到指定的元素。

2 个答案:

答案 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())。 恕我直言,这很糟糕。