我们在Selenium-RC上有一个关键字驱动框架。在此框架中,关键字,标识符和数据保存在XML文件中,框架将根据XML文件中的关键字运行AUT。
目前我们正在改变webdriver上的这个框架。我正在努力的一个方面是在执行每个步骤后记录结果。请建议执行监视执行的方法,例如查找标识符是否可用,检查是否选中了复选框等等。
我遇到了“WebDriverEventListener”并且一直在努力,如果它有助于我的要求。
请分享您关于如何记录执行结果的发现。
谢谢!
拉加
答案 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>
答案 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.
}