繁体   English   中英

如何在使用 Serenity BDD 时为 Chrome 设置日志记录首选项?

[英]How to Set Logging Preferences for Chrome whilst using Serenity BDD?

我正在尝试使用初始设置从 Chrome 中提取控制台日志,需要为 chrome webdriver 设置参数(来自使用 Selenium 捕获浏览器日志):

System.setProperty("webdriver.chrome.driver", "c:\\path\\to\\chromedriver.exe");        
DesiredCapabilities caps = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.BROWSER, Level.ALL);
caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);

在让 Serenity BDD 使用来自 (net.thucydides.core.annotations.Managed) 的 @Managed 管理我的 WebDriver 的同时,我如何让它工作?

我正在使用(JUnit + Selenium + Serenity BDD),例如我当前的布局测试如下:

@RunWith(SerenityRunner.class) 
public class UserLoginSuccessfulIT {

@Managed(driver="chrome")                              
WebDriver driver;

@Steps                                                                       
LoginSuccessfulSteps user;

  @Test
  public void user_logs_in_successfully() throws IOException{
     //GIVEN
     user.opens_loginpage();
     //WHEN
     user.userTypesUserPass("user", "pass");
     user.logs_in();
     //THEN
     user.sees_welcomepage();
     user.check_for_dead_links_from_file();

  }

}

您可以在宁静中拥有自己的跑步者,并使用您想要的功能实例化驱动程序。 通过这样做,您可以配置和重定向日志。

@RunWith(CucumberWithSerenity.class)
@CucumberOptions(
        plugin = {"pretty"},
        features = "<feature file path>",
        glue = {"<steps path as comma separated values"}
)
public class MyRunner {

       }

我今天正好需要这个。 这是我如何做到的。

在我的serenity.properties我添加了:

chrome.capabilities.loggingPrefs = { browser : all }

基于来自此处此处此处的信息

然后我创建了一个宁静Task

public class DumpLogs implements Task {

    private static final Logger log = LoggerFactory.getLogger(DumpLogs.class);

    public DumpLogs() {}

    public static DumpLogs all() {

        return Tasks.instrumented(DumpLogs.class);
    }

    @Override
    @Step("dump all browser logs")
    public <T extends Actor> void performAs(T actor) {

        WebDriver driver = BrowseTheWeb.as(actor).getDriver();
        LogEntries entries = driver.manage().logs().get(LogType.BROWSER);
        for (LogEntry entry : entries) {
            if (entry.getLevel().equals(Level.SEVERE))
                log.error(entry.getMessage());
            else if (entry.getLevel().equals(Level.WARNING))
                log.warn(entry.getMessage());
            else if (entry.getLevel().equals(Level.INFO))
                log.info(entry.getMessage());
            else
                log.debug(entry.getMessage());
        }
    }
}

我从我的@After方法中调用它,以便在每个测试的末尾(通过或失败)记录这些内容。

我的其余测试代码与您的示例几乎相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM