Как получить собственный регистратор в Selenium WebDriver
Возможно ли получить регистратор каким-то образом, что использует Selenium WebDriver? Я хочу записать транскрипт всех команд, которые были выпущены (например: open, wait, click и т.д.). В частности, я ищу Java-решение, поскольку я экспортирую тесты в junit.
Я нашел этот код на своем веб-сайте, однако он ничего не показывает на стандартном
DesiredCapabilities caps = DesiredCapabilities.firefox();
LoggingPreferences logs = new LoggingPreferences();
logs.enable(LogType.DRIVER, Level.FINEST);
caps.setCapability(CapabilityType.LOGGING_PREFS, logs);
driver = new FirefoxDriver(caps);
Ответы
Ответ 1
Включить ведение журнала в используемом драйвере, выбрать, какие типы журналов вам интересны, и уровень журнала (я использую FirefoxDriver, позволяя использовать все типы журналов и собирать все сообщения журнала)
LoggingPreferences logs = new LoggingPreferences();
logs.enable(LogType.BROWSER, Level.ALL);
logs.enable(LogType.CLIENT, Level.ALL);
logs.enable(LogType.DRIVER, Level.ALL);
logs.enable(LogType.PERFORMANCE, Level.ALL);
logs.enable(LogType.PROFILER, Level.ALL);
logs.enable(LogType.SERVER, Level.ALL);
DesiredCapabilities desiredCapabilities = DesiredCapabilities.firefox();
desiredCapabilities.setCapability(CapabilityType.LOGGING_PREFS, logs);
WebDriver driver = new FirefoxDriver(desiredCapabilities);
Затем, после запуска теста, вы можете собирать журналы (я только собираю журналы DRIVER, но вы можете сделать то же самое для любого типа журнала)
Logs logs = driver.manage().logs();
LogEntries logEntries = logs.get(LogType.DRIVER);
for (LogEntry logEntry : logEntries) {
System.out.println(logEntry.getMessage());
}
Ответ 2
Try
driver.manage().logs()
Вы получите интерфейс Logs, в котором есть методы для получения журналов и типов журналов. См. Документы интерфейса журналов
Ответ 3
Я использую log4j для ведения журнала, так как utils logger - самый простой и простой, который можно использовать (IMHO).
Зависимости POM:
<dependency>
<groupId> org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
<version>0.8.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.6.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.6.6</version>
<scope>runtime</scope>
</dependency>
импорт:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
использование:
private static Logger log = LoggerFactory.getLogger(classname.class);
а затем просто используйте его как таковое:
logger.info ("butonCLick");
driver.findElement(By.id("blablabla")).click();
Надеюсь, это сработает для вас.
Ответ 4
Попробуйте это -
import logging
logging.basicConfig(filename = log_filename, level = logging.DEBUG)
Ссылка - Селевые модульные тесты в Python - где мой файл журнала?