Если просто вызвать нажатие на любой контрол, а его нет, то Selenium просто вернет соответствующую ошибку как то: null com.thoughtworks.selenium.SeleniumException: ERROR: Element Control not found
Таким можно запросто обойтись, потому что более информативного сообщения придумать сложнее. Действительно элемент отсутствует. Но мне обычно хочется посмотреть почему и что там было вместо него. И надо обработать ситуацию шире
Таким можно запросто обойтись, потому что более информативного сообщения придумать сложнее. Действительно элемент отсутствует. Но мне обычно хочется посмотреть почему и что там было вместо него. И надо обработать ситуацию шире
В текущем тестовом фрэймворке реализован механизм, когда почти все методы селениума перегружены или расширены и расширеные методы используются намного чаще. Я всегда обрабатываю ситуацию присутствует ли элемент на странице перед тем как сделать с ним какое-либо действие. Поэтому эта проверка была включена в реализацию функции click. Точнее clickIfPresent. Есть два варианта реализации:
1) public void clickIfPresent(String elementLocator) {
if (super.isElementPresent(elementLocator)){
click(elementLocator);
}
else
logHtmlSource("Element " + elementLocator + " doesn't exist");
}
2) public void clickIfPresent(String elementLocator) {
try {
click(elementLocator);
}
catch (SeleniumException e){
logHtmlSource("Element " + elementLocator + " doesn't exist");
}
}
Как тест инженер я разницы не вижу, но наши Java-разработчики говорят, что второй правильнее :)