使用版式驱动程序启用"preserve log"



希望用chromedriver启用"保存日志"。https://sites.google.com/a/chromium.org/chromedriver/capabilities loggingprefs指向Google Code Archive页面,并且不是很有帮助。

我的总体目标是在测试执行过程中解析日志寻找错误,但是在测试过程中可能多次发生的页面导航中清除日志。

我可以想到夫妇的非理想解决方法:

  • 每个页面上的分析登录
  • 日志文件和分析日志以后

两者都不理想,所以寻找最简单的方法。

这个问题类似于启用"保存日志"。在Chrome中使用ChromeDriver编程 - 但在那儿,答案似乎是通过性能记录来记录重定向,而不是保留导航上的日志。

启用使用Chromedriver的保留日志'功能,您可以在Chromedriver选项中使用loggingprefs功能。此功能使您可以指定要捕获哪些类型的日志消息,以及将其发送到何处。

我将举一个示例,说明如何启用"保存日志"。Python的功能:来自Selenium Import Webdriver

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对象,并添加两个参数:--enable-logging--v=1。这些参数启用了Chrome浏览器中的详细记录,这是捕获所有日志消息所必需的。

我们还创建了一个loggingprefs功能对象,将浏览器键设置为" all"。这告诉Chromedriver捕获所有日志消息,包括网络请求和JavaScript控制台消息。

最后,我们将选项和功能对象同时传递给webdriver.Chrome()构造函数,该构建体可以使用所需的选项创建一个新的Chromedriver实例。

请注意,即使使用"保存日志"启用了功能,当页面导航时仍将清除日志消息。但是,您可以使用driver.get_log('browser')方法在测试期间的任何时间检索所有捕获的日志消息。

v4.0的硒具有服务参数,只需设置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)

python的硒v4.10中删除了上述desired_capibilities。但是它没有保留日志,而是在每个初始化上覆盖。

//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);
  }
}

最新更新