【问题标题】:Selenium - How to log every step that is being performed?Selenium - 如何记录正在执行的每个步骤?
【发布时间】:2016-11-04 13:37:08
【问题描述】:

我正在尝试找到一种方法来记录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");

所以我必须在需要记录的任何地方都有记录语句。是否有任何东西可以跟踪 selenium 驱动程序的操作并提供一般日志?

【问题讨论】:

  • 本地日志正是我正在寻找的。我搜索了很多,但找不到相关的帖子。谢谢。
  • 最好使用TestngJUnit

标签: java selenium selenium-webdriver automated-tests


【解决方案1】:

如果您打算使用 selenium 服务器,在执行开始后观察节点终端,它会以非常详细的方式记录每一步。我猜browserstack 使用了这种技术。

【讨论】:

    【解决方案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']}]
    

    【讨论】:

      【解决方案3】:

      Selenium 有自己的日志系统,你应该导入 LoggingPreferences 并按照以下方式进行操作

      LoggingPreferences logs = new LoggingPreferences();
      logs.enable(LogType.BROWSER, Level.ALL);
      

      有不同的LogType,如PERFORMANCE, SERVER, DRIVER, ....,您可以为其启用、禁用或设置级别。欲了解更多信息,请查看以下link中的答案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-28
        • 2016-06-12
        • 1970-01-01
        • 2012-02-29
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多