获取chrome的控制台日志

我想构建一个自动化测试,所以我必须知道chrome控制台中出现的错误。

有一个选项来获取控制台中出现的错误行?

要查看控制台:右键单击页面中的某个位置,单击“检查元素”,然后转到“控制台”。

我不知道C#但是这里的Java代码可以完成这项工作,我希望你能把它翻译成C#

import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.logging.LogEntries; import org.openqa.selenium.logging.LogEntry; import org.openqa.selenium.logging.LogType; import org.openqa.selenium.logging.LoggingPreferences; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class ChromeConsoleLogging { private WebDriver driver; @BeforeMethod public void setUp() { 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); driver = new ChromeDriver(caps); } @AfterMethod public void tearDown() { driver.quit(); } public void analyzeLog() { LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER); for (LogEntry entry : logEntries) { System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel() + " " + entry.getMessage()); //do something useful with the data } } @Test public void testMethod() { driver.get("http://mypage.com"); //do something on page analyzeLog(); } } 

注意上面代码中的setUp方法。 我们使用LoggingPreferences对象来启用日志记录。 有几种类型的日志,但如果要跟踪控制台错误,则应使用LogType.BROWSER。 然后我们将该对象传递给DesiredCapabilities,并进一步传递给ChromeDriver构造函数,我们有一个启用了日志记录的ChromeDriver实例。

在页面上执行一些操作后,我们调用analyzeLog()方法。 在这里,我们只需提取日志并迭代其条目。 在这里,您可以放置​​断言或执行您想要的任何其他报告。

我的灵感来自Michael Klepikov的代码,它解释了如何从ChromeDriver中提取性能日志。

你可以这样得到日志:

 Driver().Manage().Logs.GetLog(); 

通过指定您感兴趣的日志,您可以获取浏览器日志,即:

 Driver().Manage().Logs.GetLog(LogType.Browser); 

还记得相应地设置你的驱动程序:

 ChromeOptions options = new ChromeOptions(); options.SetLoggingPreference(LogType.Browser, LogLevel.All); driver = new ChromeDriver("path to driver", options); 

这是用于从chrome记录浏览器日志的c#代码。

 private void CheckLogs() { List logs = Driver.Manage().Logs.GetLog(LogType.Browser).ToList(); foreach (LogEntry log in logs) { Log(log.Message); } } 

这是我的实际日志代码:

  public void Log(string value, params object[] values) { // allow indenting if (!String.IsNullOrEmpty(value) && value.Length > 0 && value.Substring(0, 1) != "*") { value = " " + value; } // write the log Console.WriteLine(String.Format(value, values)); } 

根据问题6832 ,C#绑定尚未实现日志记录。 因此,现在可能没有一种简单的方法可以实现这一目标。

 driver.manage().logs().get("browser") 

获取控制台上打印的所有日志。 我能够获得除Violations之外的所有日志。 请点击此处Chrome控制台日志不会打印违规行为