2016-12-13 3 views
2

Я знаю, что я мог бы использовать (driver.findElements(By.xpath("Xpath Value")).size() != 0);Как определить, существует ли WebElement с Selenium?

Однако я использую страницу объектную модель, кто есть вся цель состоит в том, чтобы предопределить WebElements в отдельном классе, так что я не в «FindElements По» в моих тестовых классах ,

Вот что я в настоящее время

if (objPage.webElement.isEnabled()){ 
    System.out.println("found element"); 
}else{ 
    System.out.println("element not found"); 
} 

Однако это пытается идентифицировать возможно несуществующий WebElement. Когда его нет, я получаю:

Нет такого элемента»Исключение

+2

Попробуйте использовать Список , когда вы используете аннотацию FindBy для элемента, который может не существовать? Если размер не равен нулю. – Grasshopper

+0

@ Grasshopper Это хороший ответ! Почему вы не сделали его полноценным, а не простым комментарием? – Cryptor

+0

@Cryptor Ответ JeffC имеет ту же логику, и я думаю, что это правильный способ обработки этих случаев. – Grasshopper

ответ

-2

Вы можете использовать isDisplayed(), чтобы проверить, является ли видимым элементом ее достаточно тривиально, чтобы написать метод.. который будет делать то, что вы хотите что-то вроде:.

public boolean isElementDisplayed(WebElement element) { 
    try { 
     return element.isDisplayed(); 
     } catch(NoSuchElementException e) { 
     return false; 
    } 
} 
+0

Ловля исключения работает отлично, спасибо. – dsidler

+2

Слово предупреждения ... этот ответ имеет скрытую информацию. Что делать, если вы хотите подтвердить, что элемент НЕ отображается, но элемент не существует? Эта функция вернет 'false', и тест пройдет, но элемент не был даже на странице ... ложным положительным. Проверьте элемент на существование ... затем проверьте, включено ли оно. – JeffC

+0

Нам нужно проверить наличие элемента перед проверкой на нем каких-либо условий. – Akarsh

2

Лучшая практика делать то, что вы изначально предложили использовать .findElements() и проверить .size != 0 или вы также можете использовать мои предпочтения, .isEmpty() вы можете создать Ути. l, как показано ниже, чтобы проверить, существует ли элемент.

public boolean elementExists(By locator) 
{ 
    return !driver.findElements(locator).isEmpty(); 
} 

Вы также можете построить это в функцию в своем объекте страницы.

Смежные вопросы