Получение исключения элемента не найден из обработчика исключений - PullRequest
0 голосов
/ 12 июня 2018

Я получаю исключение для элемента not found при попытке найти элемент в цикле 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 голосов
/ 12 июня 2018

Лучший способ сделать это состоит в том, чтобы вообще не создавать исключений.

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

Вместо того, чтобы передавать локатор как строку и требовать XPath, используйте локатор By.Теперь вы можете передавать метод любого типа локатора ... Id, CSS-селектор и т. Д.

0 голосов
/ 12 июня 2018

Вместо использования элемента find и тайм-аутов используйте некоторое время ожидания или пока элемент не появится, а затем выполните операцию.например.Это будет ждать, пока элемент не будет найден, а затем делать то, что вы хотите сделать с вашим myDynamicELement

WebElement myDynamicElement = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("myElement")));

Похоже, вы пытаетесь проверить, присутствует ли ваш элемент или нет.Для этого используйте логику примерно так.A) Внутри попробуйте 1) Дождитесь присутствия элемента. 2) Затем используйте if if else, чтобы проверить, присутствует ли элемент, и верните true или false. B) Inside Catch обрабатывает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...