当前位置: 首页 > 知识库问答 >
问题:

如何在Selenium WebDriver中获取本机记录器

张淳
2023-03-14

是否有可能以某种方式获得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);

共有3个答案

景安翔
2023-03-14

我使用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();

希望这对你有用。

呼延运恒
2023-03-14

尝试

driver.manage().logs()

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

鱼阳伯
2023-03-14

在您使用的驱动程序中启用日志记录,选择您感兴趣的日志类型和日志级别(我使用的是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());
}
 类似资料:
  • 是否有可能以某种方式获得Selenium WebDriver使用的记录器?我想捕获所有发出的命令的记录(例如:打开、等待、单击等)。特别是我正在寻找一个java解决方案,因为我正在将测试导出到junit中。 我在他们的网站上发现了这个代码,但是它没有显示任何标准输出

  • 问题陈述:我试图在网页上获取span标记的值。*该网页上有多个span标记,其中我需要4个。

  • 我正在使用Selenium(Java版本)测试一个基于OpenLayers的API。 我想测试一个使用的功能。控制修改功能。我想单击绘制的特征(SVG),然后拖动并检查它们是否存在、可见或隐藏。 我已经画了一个多边形,并且选择了它。见下图: 这些SVG元素的HTML如下所示: 假设我想选择红点。 我试过: 但是它总是返回一个空列表。 我做错了什么?有人能帮我吗? 多谢了。 编辑1-功能:垂直显示可

  • 问题内容: 如何使用Django获得两个不同的随机记录?我见过有关如何获得一个记录的问题,但我需要获得两个随机记录,而且它们必须有所不同。 问题答案: 如果你在ORM中指定了随机运算符,我很确定它将为你提供两个不同的随机结果,不是吗?

  • 我的应用程序中有一个名为posts的实体。帖子可以是其他帖子的子帖子,因此父帖子有hasMany('Posts'),子帖子有hasOne('post')。包含是无限的。 以下是模式: 如何递归地获取“Post_id”设置为null的第一篇帖子的所有子帖子和子帖子的子帖子等? 请不要在这里评论性能,我知道这样的模式很糟糕,我只想知道如何正确编写递归函数来检索无限嵌套的帖子。

  • 问题内容: 或者我必须使用简单的方法,例如: 问题答案: 您所做的是干净,快速的。您可以改进的是预分配切片,并使用如下循环填充它: 该封装还具有填充用随机字节切片功能。因此,如果您想用随机数据填充一个切片,这就是所有必要的工作: 另一个有趣的方法是利用成为一个。这意味着它具有一种用随机数据填充的方法。 结合软件包,您可以用随机数据“填充”变量。创建a 并将其作为源传递给函数,仅此而已。 它是这样的