提问人:Michał Matyjek 提问时间:12/1/2017 更新时间:6/19/2023 访问量:2451
使用 chromedriver 启用“保留日志”
Enable "preserve log" with chromedriver
问:
希望使用 chromedriver 启用“保留日志”。https://sites.google.com/a/chromium.org/chromedriver/capabilities loggingPrefs 指向 google 代码存档页面,不是很有帮助。
我的总体目标是在测试执行期间解析日志以查找错误,但是日志在页面导航时会被清除,这可能会在测试期间多次发生。
我能想到几个不理想的解决方法:
- 解析每个页面导航的日志
- 记录到文件并稍后解析日志
两者都不理想,所以寻找最简单的方法。
这个问题类似于使用 chromedriver 以编程方式在 chrome 中启用“保留日志”——但那里的答案似乎是关于通过性能日志记录来记录重定向,而不是保留导航日志。
答:
//chromedriver,preserve log
// request postdata
ChromeOptions chromeOptions = new ChromeOptions();
//HAR
ArrayList<String> excludeSwitches = new ArrayList<>();
excludeSwitches.add("enable-automation");
chromeOptions.setExperimentalOption("excludeSwitches",excludeSwitches);
List<HarEntry> list = har.getLog().getEntries();
for (HarEntry harEntry : list){
HarRequest request = harEntry.getRequest();
if(request != null){
String requestBody = request.getPostData().getText();
System.out.println("requestBody:" + requestBody);
}
}
要在 chromedriver 中启用“保留日志”功能,您可以在 chromedriver 选项中使用 loggingPrefs 功能。此功能允许您指定要捕获的日志消息类型以及将其发送到何处。
我将举例说明如何在 Python 中启用“保留日志”功能: 从 Selenium 导入 web驱动程序
options = webdriver.ChromeOptions()
options.add_argument('--enable-logging')
options.add_argument('--v=1')
capabilities = {'loggingPrefs': {'browser': 'ALL'}}
driver = webdriver.Chrome(options=options, desired_capabilities=capabilities)
在此示例中,我们将创建一个新的 ChromeOptions 对象,并添加两个参数:和 。这些参数会在 Chrome 浏览器中启用详细日志记录,这是捕获所有日志消息所必需的。--enable-logging
--v=1
我们还将创建一个 loggingPrefs 功能对象,并将浏览器键设置为“ALL”。这会告诉 chromedriver 捕获所有日志消息,包括网络请求和 JavaScript 控制台消息。
最后,我们将 options 和 capabilities 对象都传递给构造函数,构造函数会创建一个具有所需选项的新 ChromeDriver 实例。webdriver.Chrome()
请注意,即使启用了“保留日志”功能,在导航页面时仍会清除日志消息。但是,您可以在测试期间随时使用该方法检索所有捕获的日志消息。driver.get_log('browser')
从 v4.0 开始的 Selenium 有一个服务参数,只需设置,
如果文件已存在,它将追加。log_path
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
options = webdriver.ChromeOptions()
options.add_argument('--enable-logging')
options.add_argument('--v=1')
s = ChromeService(log_path="./chromedriver.log")
driver = webdriver.Chrome(service=s, options=options)
上述desired_capabilities在 selenium v4.10 for python 中删除。 但它没有保留日志,而是在每次初始化时覆盖。
评论