从异常处理程序中获取未找到元素的异常

时间:2018-06-12 00:42:18

标签: java selenium-webdriver

尝试在try循环中找到元素时,我发现元素未找到异常。以下是我的代码:

private  boolean isPresent(WebDriver driver,String findElement)
  {
	  driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
	  try {
		  driver.findElement(By.xpath(findElement));
		  return true;
	  }
	  catch (NoSuchElementException e) {
		  return false;
	  }
     finally{
     driver.manage().timeouts().implicitlyWait(40,TimeUnit.SECONDS);
   }
  }

2 个答案:

答案 0 :(得分:2)

使用一些等待或直到元素存在然后执行操作,而不是使用find元素和超时。 例如。这将等到元素定位,然后执行您想要对myDynamicELement

执行的操作
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("myElement")));

看起来您正在尝试验证您的元素是否存在。为此使用这样的逻辑。 A)内部尝试 1)等待元素存在 2)然后使用if then else来检查元素是否存在并返回true或false B)Inside Catch处理错误。

答案 1 :(得分:-1)

更好的方法是避免首先抛出异常。

private boolean isPresent(WebDriver driver, By locator)
{
    return !driver.findElements(locator).isEmpty();
}

使用By定位器,而不是将定位器作为字符串传递并要求XPath。现在你可以传递任何定位器类型的方法... Id,CSS选择器等