2016-04-07 4 views
2

Я хочу, чтобы бросить сообщение об ошибке селена, когда XPath такого элемента является не найден я создал классКак бросить пользовательские исключения вместо NoSuchElementException селена

package NewPackage; 

public class ExplicitAssertionError extends AssertionError { 
    private static final long serialVersionUID = 1L; 
    public ExplicitAssertionError (String msg) { 
     super(msg); 
    } 
} 

Я написал код, как это для тестирует страницу

public class ResultPage extends WDBase { 
    public void assertTravelNamePresent(final String busName) { 
     final String xpath="//div[@class='company'][contains(.,'"+busName+"')]"; 
     if (!driver.findElement(By.xpath(xpath)).isDisplayed()) { 
       throw new ExplicitAssertionError("invalid text found"); 
     } 
    } 
} 

Вот когда неверный текст передается, что это, не соответствие с XPath страницы NoSuchElementException брошена вместо сообщения об ошибке. Также может кто-нибудь предоставить мне решение провалить тест, используя assertTrue/Ложные в тех случаях, когда элемент не найден Благодарности

ответ

3

Используйте findElements() метод и проверьте длину:

if (driver.findElements(By.xpath(xpath)).size() == 0) { 
    throw new ExplicitAssertionError("element not found"); 
} 
+0

Не могли бы вы объяснить, как проверяется xpath по размеру()? –

+0

@nikhiludgirkar Это просто, что 'size()' будет возвращать '0', если нет элементов, соответствующих выражению xpath. Я думаю, это именно то, что вы пытаетесь сделать, верно? – alecxe

+0

Это полезно для проверки isDisplayed() как насчет isEnabled() –

-1

Вы также можете использовать ниже подход:

try{ 
    driver.findElement(By.xpath(xpath)).isDisplayed() 
} 
catch(Exception ex){ 
    throw new Exception("element not found"); 
} 
+0

Этот подход, однако, напечатает сообщение об ошибке, но тест всегда будет передан, даже если xpath не найден. Мне нужно пропустить тест, когда xpath не найден –

+0

Если вы используете выше, то проверка кода завершится неудачей с сообщением о том, что вы пройдете с помощью Exception –

+0

Вместо try..catch мы можем написать просто написать «throws» и сделать это? –

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