Вместо поиска элемента по linkText попробуйте найти элементы по тексту, используя XPath.
Поскольку вы используете метод isDisplayed()
, чтобы проверить, является ли элемент видимым или нет, я предполагаю, что вы ожидаете, что элемент когда-нибудь будет невидимым.В этом случае, если элемент не виден, он всегда будет генерировать исключение NoSuchElement.
Чтобы избежать этого, либо вы должны использовать условие внутри блока try и обработать исключение в блоке catch.Или вы можете использовать findElements
и проверить размер списка, который никогда не выдаст исключение.
Как упомянуто cruisepandey, вы также должны использовать явное ожидание задержки загрузки элемента.
String reports = "Order Qty";
List<WebElement> list = new WebDriverWait(driver,30).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@class='kpi-report-wrapper']/h2[contains('"+reports+"')]")));
if(list.isEmpty()){
System.out.println("report = "+reports+ "does not exist" );
}else {
System.out.println("report = "+reports+ "exists");
}