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
相关推荐
测试19981 小时前
2024软件测试面试热点问题
自动化测试·软件测试·python·测试工具·面试·职场和发展·压力测试
代码欢乐豆2 小时前
数据采集之selenium模拟登录
python·selenium·测试工具
测试杂货铺5 小时前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
小码哥说测试7 小时前
接口测试用例设计的关键步骤与技巧解析!
自动化测试·测试工具·jmeter·职场和发展·测试用例·接口测试·postman
小白学大数据13 小时前
正则表达式在Kotlin中的应用:提取图片链接
开发语言·python·selenium·正则表达式·kotlin
awonw1 天前
[java][框架]springMVC(1/2)
测试工具·postman
迃幵chen1 天前
wireshark-网络分析工具
网络·测试工具·wireshark
孤蓬&听雨1 天前
RabbitMQ自动发送消息工具(自动化测试RabbitMQ)
分布式·测试工具·自动化·rabbitmq·自动发送消息
土小帽软件测试1 天前
jmeter基础01-2_环境准备-Mac系统安装jdk
java·测试工具·jmeter·macos·软件测试学习
qq_433716951 天前
测试分层:减少对全链路回归依赖的探索!
自动化测试·软件测试·功能测试·测试工具·回归·pytest·postman