Показаны сообщения с ярлыком Selenium. Показать все сообщения
Показаны сообщения с ярлыком Selenium. Показать все сообщения

четверг, 10 февраля 2011 г.

Нет элемента? Давайте посмотрим

Если просто вызвать нажатие на любой контрол, а его нет, то 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-разработчики говорят, что второй правильнее :)

среда, 15 декабря 2010 г.

Мелкие кремниевые полезности

Selenium - это бесплатное и очень удобное средство автоматизации веб приложений. Работает как библиотека на разных языках (Java, C#, Ruby, PHP, Perl, Python), подключаемая к вашему тестовому сьюту. Там большое количество атомарных методов, но для большего удобства постоянно приходится немного дорабатывать различными дополнительными методами.

Пожалуй правильнее всего с точки срезния разработки не встраивать такие методы в свои тестовые методы, т.к. они не связаны с логикой приложения, но используются в тестах, а унаследовать от основоного класса библиотеки Selenium и добавить такие дополнительные методы именно туда.

Приведу пару примеров, а заодно сохраню их у себя :)