Selenium - 如何记录正在执行的每个步骤?

时间:2016-07-02 06:41:11

标签: java selenium selenium-webdriver automated-tests

我正在尝试找到记录selenium driver对象执行的每个操作的方法。 Log4j是通常建议的解决方案。但是,需要专用日志语句添加到日志中,如下所示 -

driver.findElement(By.name("opt1")).sendKeys("km");
log.debug("selecting distance unit");
driver.findElement(By.name("opt2")).sendKeys("10");
log.debug("selecting distance value");

所以我必须在任何需要记录的地方都有日志语句。有没有什么跟踪硒驱动程序的行为并给出一般日志?

3 个答案:

答案 0 :(得分:2)

扩展您正在使用的WebDriver类并覆盖日志函数,在每次函数调用之前和之后调用此函数。

示例:

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.SessionId;

public class MyWebDriver extends ChromeDriver {
    @Override
    protected void log(SessionId sessionId, String commandName, Object toLog, When when) {
        System.out.println("LOG: sessionId: " + sessionId + " when: " + when + " commandName: " + commandName + " toLog: " + toLog);
        super.log(sessionId, commandName, toLog, when);
    }
}

此代码将为您提供如下所示的输出:

LOG: sessionId: 70521460-9ccf-4619-97ea-e7be4717a9b8 when: BEFORE commandName: findElement toLog: [70521460-9ccf-4619-97ea-e7be4717a9b8, findElement {using=xpath, value=//*[@hint='Username']}]
LOG: sessionId: 70521460-9ccf-4619-97ea-e7be4717a9b8 when: AFTER commandName: findElement toLog: [70521460-9ccf-4619-97ea-e7be4717a9b8, findElement {using=xpath, value=//*[@hint='Username']}]
LOG: sessionId: 70521460-9ccf-4619-97ea-e7be4717a9b8 when: BEFORE commandName: findElement toLog: [70521460-9ccf-4619-97ea-e7be4717a9b8, findElement {using=xpath, value=//*[@id='Password']}]
LOG: sessionId: 70521460-9ccf-4619-97ea-e7be4717a9b8 when: AFTER commandName: findElement toLog: [70521460-9ccf-4619-97ea-e7be4717a9b8, findElement {using=xpath, value=//*[@id='Password']}]

答案 1 :(得分:0)

如果您计划在执行开始时使用selenium服务器观察节点终端,则会以非常详细的方式记录每个步骤。我猜browserstack使用这种技术。

答案 2 :(得分:0)

Selenium有其自己的日志系统,您应该导入419 CSRF token mismatch.并执行以下操作

LoggingPreferences

有不同的LoggingPreferences logs = new LoggingPreferences(); logs.enable(LogType.BROWSER, Level.ALL); ,例如LogType,您可以为其启用,禁用或设置级别。有关更多信息,请查看以下link

中的答案