我在获取带有Selenium的chrome浏览器控制台日志[INFO]条目时遇到问题,而我获得的唯一Level类型的条目是错误(警告,严重)。
是否有任何方法可以获取与错误条目不同的东西,因为我需要获取[INFO]条目并根据其内容进行断言,所以我最近读到Selenium能够仅出于错误而返回条目,这样准确吗?
非常感谢您提供的任何信息, 谢谢您的关注和时间!
答案 0 :(得分:0)
从文档(http://chromedriver.chromium.org/logging):
默认情况下,ChromeDriver仅将警告/错误记录到stderr。调试问题时,启用更多详细日志记录将很有帮助。
也来自文档:
System.setProperty("webdriver.chrome.logfile", "D:\\chromedriver.log");
System.setProperty("webdriver.chrome.verboseLogging", "true");
希望有效。
替代选项
如果上述方法不起作用,您可以尝试以下方法,这次改为使用ChromeOptions
对象:
ChromeOptions options = new ChromeOptions();
options.setArguments("--log-level=1");
或来自({https://www.chromium.org/for-testers/enable-logging)
要启用日志记录,请使用以下命令行标志启动Chrome: --enable-logging --v = 1
翻译为:
options.setArguments("--enable-logging --v=1");
答案 1 :(得分:0)
感谢您的回答,但不幸的是,没有一个对我有用,我设法使用以下方法为我的问题找到了解决方案:
ChromeOptions options = new ChromeOptions();
options.setCapability(ChromeOptions.CAPABILITY, getCap());
WebDriver driver = new ChromeDriver(options);
与定制方法一起使用:
private static DesiredCapabilities getCap() {
DesiredCapabilities caps = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.INFO);
logPrefs.enable(LogType.PROFILER, Level.INFO);
logPrefs.enable(LogType.BROWSER, Level.INFO);
logPrefs.enable(LogType.CLIENT, Level.INFO);
logPrefs.enable(LogType.DRIVER, Level.INFO);
logPrefs.enable(LogType.SERVER, Level.INFO);
caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
return caps;
}
最后不得不制定一种过滤方法,因为硒对我来说无法正常工作,并返回了所有条目:
private static List<LogEntry> filterLog(LogEntries entries) {
List<LogEntry> logs = new ArrayList<>();
for (LogEntry entry : entries) {
if(entry.getLevel().toString().equals(INFO)) {
logs.add(entry);
}
}
return logs;
}