Selenium 捕获 console logs (Java)

目录

启用日志记录功能


有时候在进行自动化测试的时候控制台输出会帮忙定位问题,所以捕获控制台输出就显得很重要了~

以下以selenium 4为例:

我们可以使用driver.manage().logs().get(LogType.BROWSER)代码在Selenium中检索日志,该代码将返回一个包含所有控制台日志的LogEntries对象。

启用日志记录功能

在捕获日志之前,我们将在驱动程序实例中添加日志记录功能。

java 复制代码
ChromeOptions options = new ChromeOptions();
 
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.BROWSER, Level.ALL);
options.setCapability(options.LOGGING_PREFS, logPrefs);
WebDriver driver = new ChromeDriver(options);

然后我们可以使用getLog()方法轻松地获取控制台日志。

java 复制代码
LogEntries entry = driver.manage().logs().get(LogType.BROWSER);

这将返回一个日志条目列表,然后我们可以对其进行迭代并打印到控制台。

java 复制代码
// Retrieving all logs
List<LogEntry> logs = entry.getAll();
 
// Printing details separately
for (LogEntry e : logs) {
    System.out.println("Message: " + e.getMessage());
    System.out.println("Level: " + e.getLevel());
}

getMessage()打印控制台上显示的消息。

getLevel()打印消息的级别。它可以是INFO、WARNING、SEVERE等。

我们还可以使用getTimestamp()来获取在浏览器控制台上打印消息的时间戳。

java 复制代码
import java.util.List;
import java.util.logging.Level;
 
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
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.testng.annotations.Test;
 
public class CodekruTest {
 
    @Test
    public void getLogs() {
 
        // pass the path of the chromedriver location in the second argument
        System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
         
        ChromeOptions options = new ChromeOptions();
        LoggingPreferences logPrefs = new LoggingPreferences();
        logPrefs.enable(LogType.BROWSER, Level.ALL);
        options.setCapability(options.LOGGING_PREFS, logPrefs);
         
        WebDriver driver = new ChromeDriver(options);
        driver.get("https://testkru.com/TestUrls/TestConsoleLogs");
 
        LogEntries entry = driver.manage().logs().get(LogType.BROWSER);
 
        // Retrieving all logs  
        List<LogEntry> logs = entry.getAll();
 
        // Printing details separately
        for (LogEntry e : logs) {
            System.out.println("Message: " + e.getMessage());
            System.out.println("Level: " + e.getLevel());
            System.out.println("Timestamp: "+ e.getTimestamp());
        }
 
    }
 
}

输出:

bash 复制代码
Message: https://testkru.com/TestUrls/TestConsoleLogs 102:30 "This is a console log by using the console.log() method"
Level: INFO
Timestamp: 1673764474531
Message: https://testkru.com/TestUrls/TestConsoleLogs 103:30 "This is an info log by using the console.info() method"
Level: INFO
Timestamp: 1673764474531
Message: https://testkru.com/TestUrls/TestConsoleLogs 104:30 "This is a debug log by using the console.debug() method"
Level: FINE
Timestamp: 1673764474531
Message: https://testkru.com/TestUrls/TestConsoleLogs 105:29 "This is a warning log by using the console.warn() method"
Level: WARNING
Timestamp: 1673764474531
Message: https://testkru.com/TestUrls/TestConsoleLogs 106:29 "This is an error log by using the console.error() method"
Level: SEVERE
Timestamp: 1673764474531
相关推荐
H_unique1 小时前
Chat2Excel:接口自动化测试
python·测试工具·自动化
Sarapines Programmer20 小时前
【Wireshark】安装与使用指南
网络·测试工具·wireshark
念越1 天前
接口自动化测试从入门到实战:接口用例设计、Requests、Pytest、YAML、JSON Schema 与 Allure 报告
python·测试工具·自动化·json·pytest
ysu_03143 天前
Postman接口调试实战指南-从HTTP请求到环境变量-Collection与自动化测试
网络·网络协议·测试工具·http·api·postman·可用性测试
ZhangJun954 天前
从零写一个类鲁大师的硬件检测小工具,软件附上,可直接使用
windows·测试工具·电脑·笔记本电脑·硬件架构
测试员周周5 天前
【jev应用到测试】94 条 UI 报错交给 Jev,三档判对 85.1%,开单闸门定在 0.6
人工智能·python·测试工具·单元测试·测试用例
xfilm埃利测量5 天前
从方阻到电阻率:四探针法如何把薄膜“测明白“
功能测试·测试工具·四探针·薄膜电阻测量
禹凕6 天前
机器学习之Selenium(Machina Learning about Selenium)
爬虫·python·selenium·测试工具·机器学习
水水不水啊8 天前
告别杂乱的调试窗口:我用 Python + WebView 写了一个现代化串口助手
python·测试工具·嵌入式·嵌入式开发·串口调试·串口助手
把头塞进显示器14 天前
电商平台-测试报告
python·selenium·pytest