尝试在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);
}
}
答案 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选择器等