NoSuchElementException с методом isDisplayed() в блоке try catch в Selenium
Я хочу проверить отрицательное состояние. выше логический элемент не отображается, но я должен напечатать истину и ложь, но он не показывает исключение такого элемента, пожалуйста, помогите.
try{
boolean k= driver.findElement(By.xpath("xpath_of_element")).isDisplayed();
if(!k==true)
{
System.out.println("true12");
}
}catch (NoSuchElementException e) {
System.out.println(e);
}
2 ответа
Есть два отличных этапа элемента следующим образом:
- Элемент присутствует в HTML DOM
- Элемент видимый, т.е. отображается в дереве DOM
Поскольку вы видите NoSuchElementException, который по существу указывает, что элемент отсутствует в области просмотра и во всех возможных условиях isDisplayed()
метод вернет false. Таким образом, для проверки обоих условий вы можете использовать следующее решение:
try{
if(driver.findElement(By.xpath("xpath_of_the_desired_element")).isDisplayed())
System.out.println("Element is present and displayed");
else
System.out.println("Element is present but not displayed");
}catch (NoSuchElementException e) {
System.out.println("Element is not present, hence not displayed as well");
}
if (driver.findElements(xpath_of_element).size() != 0) return true;
return false;
Вы должны использовать приведенный ниже код, который будет проверять, присутствует ли хотя бы один или несколько элементов для данного xpath, перед проверкой состояния отображения элемента.
List<WebElement> targetElement = driver.findElements(By.xpath("xpath_your_expected_element"));
try {
if(targetElement>=1) {
if(targetElement.isDisplayed()) {
System.out.println("Element is present");
}
else {
System.out.println("Element is found, but hidden on the page");
}
else {
System.out.println("Element not found on the page");
}
}catch (NoSuchElementException e) {
System.out.println("Exception in finding the element:" + e.getMessage());
}