Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath Selenium:在searchContext中查找元素_Xpath_Selenium_Webdriver - Fatal编程技术网

Xpath Selenium:在searchContext中查找元素

Xpath Selenium:在searchContext中查找元素,xpath,selenium,webdriver,Xpath,Selenium,Webdriver,各位!! 我遇到了以下问题: 有一些 SearchContext searchContext; By by; 可以是WebDriver或WebElement。 假设它们都已初始化(我们不知道如何初始化); 现在我们想要找到具有这种xpath的元素,似乎要做以下工作 List<WebElement> elements = searchContext.findElements(by); 这行不通!(找不到任何元素),因为我们需要 by = By.xpath("./div"); (见

各位!! 我遇到了以下问题: 有一些

SearchContext searchContext;
By by;
可以是WebDriver或WebElement。 假设它们都已初始化(我们不知道如何初始化); 现在我们想要找到具有这种xpath的元素,似乎要做以下工作

List<WebElement> elements = searchContext.findElements(by);
这行不通!(找不到任何元素),因为我们需要

by = By.xpath("./div");
(见附件) 但是,正如我所提到的,我们对by是如何初始化的一无所知

因此,我的问题是:尽管存在上述问题,是否有任何方法可以正确地找到元素?
我有两个变量:by和searchContext,我应该在searchContext中查找指定的元素。

您可以在某个助手方法中执行此操作,如果发生这种情况,该方法将引发异常

public List<WebElement> returnSearchContext(By by, SearchContext searchContext){
  List<WebElement> elements = searchContext.findElements(by);
  if (elements.getSize()>0){
     return elements;}
   else{
     throw new ElementNotFoundException();
   }
}
public List returnSearchContext(By,SearchContext SearchContext){
List elements=searchContext.findElements(按);
if(elements.getSize()>0){
返回元素;}
否则{
抛出新元素NotFoundException();
}
}

我写这篇文章时没有访问任何IDE,所以我可能会在示例代码中出错。例如,我认为异常需要一些参数。但我希望您能明白这一点。

您可以通过一些助手方法来完成,如果发生这种情况,该方法将抛出异常

public List<WebElement> returnSearchContext(By by, SearchContext searchContext){
  List<WebElement> elements = searchContext.findElements(by);
  if (elements.getSize()>0){
     return elements;}
   else{
     throw new ElementNotFoundException();
   }
}
public List returnSearchContext(By,SearchContext SearchContext){
List elements=searchContext.findElements(按);
if(elements.getSize()>0){
返回元素;}
否则{
抛出新元素NotFoundException();
}
}

我写这篇文章时没有访问任何IDE,所以我可能会在示例代码中出错。例如,我认为异常需要一些参数。但我希望你能明白。据我所知,现在有办法做到这一点。 唯一的方法是正确地手动指定By.xpath:

By child = By.xpath("/div");
By descendant = By.xpath("//div");
对于WebDriver.isAssignableFrom(searchCOntext.getCLass()), 及

对于WebElement.isAssignableFrom(searchCOntext.getCLass())。
依我看,这很糟糕。

据我所知,现在有办法做到这一点。 唯一的方法是正确地手动指定By.xpath:

By child = By.xpath("/div");
By descendant = By.xpath("//div");
对于WebDriver.isAssignableFrom(searchCOntext.getCLass()), 及

对于WebElement.isAssignableFrom(searchCOntext.getCLass())。 哦,太糟糕了。

谢谢你的回复!=)不幸的是,这并不能解决问题,它只是一种处理失败的方法。这是我的错——我的问题表述不够清楚。我让它更具体。愚蠢的我:)问题只是“那么容易”吗?意思-当搜索上下文为WebElement时,您真的需要查找唯一的子DIV吗?还是很复杂?谢谢您的回复!=)不幸的是,这并不能解决问题,它只是一种处理失败的方法。这是我的错——我的问题表述不够清楚。我让它更具体。愚蠢的我:)问题只是“那么容易”吗?意思-当搜索上下文是WebElement时,您真的需要查找唯一的子DIV,还是很复杂?