获取Chrome浏览器的控制台日志

获取Chrome浏览器的控制台日志

问题描述:

我想建立一个自动化的测试,所以我必须要知道,出现在镀铬的控制台中的错误。

I want to build an automation testing, so I have to know the errors that appear in the console of chrome.

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

there is an option to get the error lines that appear in the console?

为了看到控制台:右键单击页面中的某个地方,点击检查元素,然后进入控制台

In order to see the console: right click somewhere in the page, click "inspect element" and then go to "console".

我不知道C#,但这里的Java code,没有工作,我希望你可以把它转换为C#

I don't know C# but here's Java code that does the job, I hope you can translate it to 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();
    }
}

注重上文code设置方式。我们使用记录preferences反对启用日志记录。有几个类型的日志,但是如果你想跟踪控制台错误,那么LogType.BROWSER是你要使用的一个。然后我们传递对象DesiredCapabilities并进一步ChromeDriver构造,瞧 - 我们有ChromeDriver的实例,启用日志记录

Pay attention to setUp method in above code. We use LoggingPreferences object to enable logging. There are a few types of logs, but if you want to track console errors then LogType.BROWSER is the one that you should use. Then we pass that object to DesiredCapabilities and further to ChromeDriver constructor and voila - we have an instance of ChromeDriver with logging enabled.

页面上执行一些动作后,我们调用analyzeLog()方法。在这里,我们简单的提取日志,并通过其条目迭代。在这里,你可以把断言或做其他任何报告你想要的。

After performing some actions on page we call analyzeLog() method. Here we simply extract the log and iterate through its entries. Here you can put assertions or do any other reporting you want.

我的灵感是迈克尔Klepikov 这code,介绍如何提取ChromeDriver性能日志。

My inspiration was this code by Michael Klepikov that explains how to extract performance logs from ChromeDriver.