![](/img/trans.png)
[英]Appium Android switch app (native and chrome) using serenity BDD
[英]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.