我在使用Selenium时遇到了问题,无法获取Chrome浏览器控制台日志中的[INFO]条目。我只能获取错误(WARNING,SEVERE)类型的条目。是否有办法获得与错误条目不同的内容,因为我需要获取[INFO]条目并基于其内容进行断言。最近我读到Selenium只能返回错误条目,这是准确的吗?非常感谢您提供的任何信息,感谢您的关注和时间!
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;
}
最后我不得不编写一个过滤方法,因为 Selenium 的方法对我来说无法正常工作,并返回了所有条目:
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;
}
从文档中(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");
options = Options()
options.set_capability('goog:loggingPrefs', { 'browser':'ALL' })
logs = driver.get_log("browser")
for log in logs:
print(log)