Блог вебразработчика
  • ГЛАВНАЯ
  • ПОДПИСКА

WebDriverEventListener — логирование хода выполнения теста

Сен19
2012
Написал Tatyana

Для отслеживания детального хода выполнения теста, например, отслеживания поиска элементов, нажатий на них, ввода текста, выполнения javascript и т.д, библиотека Selenium предоставляет интерфейс WebDriverEventListener. Интерфейс работает в паре с EventFiringWebDriver, который представляет собой обертку для любой реализации веб-драйвера и позволяет регистрировать объект WebDriverEventListener. Создать собственный listener событий драйвера можно двумя способами:

  • создать класс, реализующий интерфейс WebDriverEventListener и все его методы;
import org.openqa.selenium.support.events.WebDriverEventListener;

public class WebDriverLogger implements WebDriverEventListener {
  • создать класс, унаследованный от AbstractWebDriverEventListener. Все методы, предоставляемые AbstractWebDriverEventListener, пустые (не содержат кода). Поэтому в унаследованном классе можно переопределять не все, а только интересующие методы.
import org.openqa.selenium.support.events.AbstractWebDriverEventListener;

public class WebDriverLogger extends AbstractWebDriverEventListener { 

Простенький пример логирования работы драйвера:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.events.AbstractWebDriverEventListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class WebDriverLogger extends AbstractWebDriverEventListener {
	  
    private static final Logger LOGGER = LoggerFactory
            .getLogger(WebDriverLogger.class);

    @Override
	public void afterNavigateTo(String url, WebDriver driver) {
		LOGGER.info("WebDriver navigated to '" + url + "'");
	}

    @Override
	public void beforeClickOn(WebElement element, WebDriver driver) {
		LOGGER.info("WebDriver click on element - " 
							+ elementDescription(element));
	}

    @Override
	public void beforeChangeValueOf(WebElement element, WebDriver driver) {
		LOGGER.info("WebDriver will change value for element - " 
							+ elementDescription(element));
	}

    @Override
	public void afterChangeValueOf(WebElement element, WebDriver driver) {
		LOGGER.info("WebDriver changed value for element - " 
							+ elementDescription(element));
	}

	private String elementDescription(WebElement element) {
		String description = "tag:" + element.getTagName();
		if (element.getAttribute("id") != null) {
			description += " id: " + element.getAttribute("id");
		}
		else if (element.getAttribute("name") != null) {
			description += " name: " + element.getAttribute("name");
		}
		
		description += " ('" + element.getText() + "')";
		
		return description;
	}
}

Подключение WebDriverLogger выполняется следующим образом:

import org.openqa.selenium.support.events.EventFiringWebDriver;


EventFiringWebDriver driver = 
					new EventFiringWebDriver(new FirefoxDriver());
driver.register(new WebDriverLogger());

Приведенный выше пример просто показывает как можно использовать реализацию WebDriverEventListener. Естественно, он может использоваться для любых других целей, например, снятия скриншотов или подсвечивания активных элементов. Использование WebDriverEventListener носит в себе вспомогательный характер, поэтому не переносите в него реализацию выполнения тестов, например, ожидание определенного состояния элемента перед кликом. Для таких вещей более подходящими будут обертки веб-элементов или другие подобные средства.

  • Нравится
  • Tweet

Опубликовано в Selenium - Помечено Selenium WebDriver
Рассказать всем Twitter Facebook Delicious StumbleUpon E-Mail
← PageObject для AJAX-приложений
Продвижение сайта: все о закупке ссылок →

7 комментариев

  1. Juve's Gravatar Juve
    20.09.2012 at 11:39 | Permalink

    @Override
    public void afterNavigateTo(String url, WebDriver driver) {
    LOGGER.info(«WebDriver navigated to ‘» + url + «‘»);
    }
    Вероятно урл тут получается из драйвера

  2. Juve's Gravatar Juve
    20.09.2012 at 11:41 | Permalink

    Ой, блин, урл передается, сори)

  3. Vladislav's Gravatar Vladislav
    12.12.2012 at 08:12 | Permalink

    а что делать если возникает ошибка?
    SLF4J: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError.
    SLF4J: See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.

    • Tatyana's Gravatar Tatyana
      12.12.2012 at 08:33 | Permalink

      slf4j-log4j12 предназначен для того, чтобы перенаправлять вызовы SLF4J к логгеру log4j. log4j-over-slf4j наоборот перенаправляет вызовы log4j к SLF4J. Одновременно они не могут сосуществовать в проекте, определите с каким логгером Вы хотите работать и исключите ненужный jar из проекта. Вычислите после добавления чего в проект появилась ошибка или используйте mvn dependency:tree для поиска (для maven проекта). Если он подключился вместе с какой-то другой библиотекой, то используйте exclude в pom файле:

        <dependencies>
          <dependency>
            <groupId>sample.ProjectB</groupId>
            <artifactId>Project-B</artifactId>
            <version>1.0-SNAPSHOT</version>
            <exclusions>
              <exclusion>
                <groupId>sample.ProjectD</groupId>
                <artifactId>Project-D</artifactId>
              </exclusion>
            </exclusions>
          </dependency>
        </dependencies>
      
  4. Vladislav's Gravatar Vladislav
    08.05.2013 at 12:25 | Permalink

    Татьяна скажите пожалуйста, как из консоли не выводить сообщения такого рода.
    [junit] май 08, 2013 3:33:36 PM org.slf4j.impl.JCLLoggerAdapter info
    [junit] INFO: Драйвер Собирается Кликнуть по Элементу — ТЭГ:li id: (‘Подробно’)
    [junit] май 08, 2013 3:33:36 PM org.slf4j.impl.JCLLoggerAdapter info
    [junit] INFO: Драйвер Собирается Кликнуть по Элементу — ТЭГ:a id: (‘В корзину’)
    [junit] май 08, 2013 3:33:44 PM org.slf4j.impl.JCLLoggerAdapter info

  5. Vladislav's Gravatar Vladislav
    08.05.2013 at 12:25 | Permalink

    ой) я имел ввиду конкретно
    [junit] май 08, 2013 3:33:36 PM org.slf4j.impl.JCLLoggerAdapter info

    а то лог уж очень большой получается

    • Tatyana's Gravatar Tatyana
      08.05.2013 at 17:48 | Permalink

      Да вид строки в логе можно изменить. Но slf4j это просто фасад для различных фреймворков логгирования, нужно выяснить какой конкретно фреймворк используется и его настраивать.

Свежие записи

  • WebDriver и SSL Untrusted certificate
  • Видеозапись выполнения тестов Selenium
  • Selenium WebDriver: basic авторизация
  • BrowserMob Proxy + Selenium: автоматизация сбора данных о производительности
  • Hibernate 4: UserType пользовательский тип данных (часть 2)

Поиск

Рубрики

  • Hibernate ORM
  • SEO
  • Разное
  • Тестирование
    • JUnit
    • Selenium
    • Thucydides

Метки

Actions AJAX Alert AutoIt ChromeDriver Exceptions ExpectedConditions FindElement FirefoxDriver Hibernate InternetExplorerDriver Java Javascript Jenkins JUnit4 Maven PageFactory Page Object RemoteWebDriver Select Selenium IDE Selenium Server Selenium WebDriver switchTo Thucydides WebDriverWait XPath Автоматизированное тестирование база данных заработок в сети сеть Интернет скорость продвижения сайта статейное продвижение услуги продвижения

Реклама


Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.

Блог вебразработчика
Функциональное тестирование и продвижение сайтов

Яндекс.Метрика