21

是否有可能以某种方式获得 Selenium WebDriver 使用的记录器?我想捕获所有发出的命令的记录(例如:打开、等待、单击等)。特别是我正在寻找一个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);
4

4 回答 4

36

在您使用的驱动程序中启用日志记录,选择您感兴趣的日志类型和日志级别(我使用的是 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());
}
于 2014-05-07T08:58:26.093 回答
3

尝试

driver.manage().logs()

您将获得 Logs 接口,该接口具有获取日志和日志类型的方法。请参阅日志接口文档

于 2013-09-26T20:36:55.533 回答
0

尝试这个 -

import logging
logging.basicConfig(filename = log_filename, level = logging.DEBUG)

参考 - Python 中的 Selenium 单元测试 - 我的日志文件在哪里?

于 2013-02-09T00:45:37.090 回答
0

我正在使用 log4j 进行日志记录,因为 utils logger 是最简单、最直接的一种,可以使用(恕我直言)。

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();

希望这对你有用。

于 2012-11-04T15:44:36.540 回答