WebDriver跟踪执行和记录结果

时间:2015-01-21 16:28:14

标签: java selenium selenium-webdriver webdriver

我们在Selenium-RC上有一个关键字驱动框架。在此框架中,关键字,标识符和数据保存在XML文件中,框架将根据XML文件中的关键字运行AUT。

目前我们正在改变webdriver上的这个框架。我正在努力的一个方面是在执行每个步骤后记录结果。请建议执行监视执行的方法,例如查找标识符是否可用,检查是否选中了复选框等等。

我遇到了“WebDriverEventListener”并且一直在努力,如果它有助于我的要求。

请分享您关于如何记录执行结果的发现。

谢谢!

拉​​加

2 个答案:

答案 0 :(得分:2)

您可以使用log4j。例如,添加Maven依赖项:

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.1</version>
        </dependency>

定义记录器:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Log
{
    private static final Logger logger = LogManager.getLogger(Log.class);

    public static void info(String message)
    {
        Log.info(message);
    }

    public static void warn(String message)
    {
        Log.warn(message);
    }

    public static void error(String message)
    {
        Log.error(message);
    }
}

然后你必须创建logger对象static Logger logger = LogManager.getLogger("com.your.package");

现在您可以在测试方法(或页面对象内)中使用它,例如logger.info("user clicked link to open login poup");

您也可以为记录器创建配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5level] %logger{36} - %msg%n"/>
        </Console>
        <File name="LogFile" fileName="logs/${date:yyyy-MM-dd HH:mm}.log" immediateFlush="false" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5level] %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Logger name="com.mycompany.openforbeta.utils.Log" level="info">
            <AppenderRef ref="Console"/>
        </Logger>
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="LogFile"/>
        </Root>
    </Loggers>
</configuration>

此处提供更多信息http://logging.apache.org/log4j/2.x/

答案 1 :(得分:1)

您绝对可以使用WebDriverEventListener并添加自定义日志语句。我认为这是一个好主意。我的回答here部分回答了这个问题。

您可以将WebDriverEventListener与WebDriver内部日志结合使用。 WebDriver为您提供各种级别的内部日志。要实现此目的,您需要设置loggingPreferences功能,一旦完成所有测试,您就可以检索日志并打印/保存它们。例如,

LoggingPreferences loggingPreferences = new LoggingPreferences();
loggingPreferences.enable(LogType.BROWSER, Level.ALL);
loggingPreferences.enable(LogType.CLIENT, Level.ALL);
loggingPreferences.enable(LogType.DRIVER, Level.ALL);
loggingPreferences.enable(LogType.PERFORMANCE, Level.ALL);
loggingPreferences.enable(LogType.PROFILER, Level.ALL);
loggingPreferences.enable(LogType.SERVER, Level.ALL);
DesiredCapabilities desiredCapabilities = DesiredCapabilities.firefox();
desiredCapabilities.setCapability(CapabilityType.LOGGING_PREFS, loggingPreferences);

WebDriver driver = new FirefoxDriver(desiredCapabilities);
driver.get("http://www.google.com");
Logs logs = driver.manage().logs();
LogEntries logEntries = logs.get(LogType.DRIVER); //now pick the LOG type you want
for (LogEntry logEntry : logEntries) {
    System.out.println(logEntry.getMessage());
    //or save write it to log4j etc.
}