性能日志

ChromeDriver支持性能日志记录,您可以从中获取域“时间轴”,“网络”和“页面”的事件,以及指定跟踪类别的跟踪数据。

启用性能日志

默认情况下不启用性能日志记录。因此,在创建新会话时,您必须启用它。

DesiredCapabilities cap = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:9515"), cap);

启用后,性能日志将收集时间轴,网络和页面事件。要同时启用跟踪或自定义性能日志记录,请参阅以下部分。使用默认选项

查看性能日志记录的完整示例(信用:Michael Klepikov)。

Angular Benchpress还使用性能记录。

跟踪和自定义日志记录

如果您希望自定义性能日志记录,例如启用跟踪,则可以使用perfLoggingPrefs功能(通过ChromeOptions)。可以通过指定一个或多个Chrome跟踪类别来启用跟踪。有关Chrome跟踪的详细信息,请参阅此处。

启用跟踪时,将隐式禁用时间轴域。请注意,您仍需要使用loggingPrefs功能启用性能日志。

DesiredCapabilities cap = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);

Map<String, Object> perfLogPrefs = new HashMap<String, Object>();
perfLogPrefs.put("traceCategories", "browser,devtools.timeline,devtools"); // comma-separated trace categories
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("perfLoggingPrefs", perfLogPrefs);
caps.setCapability(ChromeOptions.CAPABILITY, options);

RemoteWebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:9515"), cap);

您还可以使用perfLoggingPrefs单独启用或禁用网络和页面域。例如,您可以在跟踪时显式启用网络域:

...
Map<String, Object> perfLogPrefs = new HashMap<String, Object>();
perfLogPrefs.put("traceCategories", "browser,devtools.timeline,devtools");
perfLogPrefs.put("enableNetwork", true);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("perfLoggingPrefs", perfLogPrefs);
caps.setCapability(ChromeOptions.CAPABILITY, options);
...

关于跟踪的说明

如果启用了跟踪功能,ChromeDriver会在启动Chrome时启动浏览器范围的跟踪,并会继续跟踪,直到Chrome关闭。当跟踪正在运行时,Chrome会缓冲内存中的跟踪事件,直到跟踪停止为止。跟踪缓冲区已满后,将不再记录跟踪事件。为避免完整缓冲区(从而丢失跟踪数据),ChromeDriver将定期停止当前跟踪,收集缓冲事件,并在测试期间的某些点重新开始跟踪。

收集跟踪事件会增加测试开销,因此ChromeDriver仅在测试期间的适当点收集跟踪事件。目前,仅在页面导航事件以及请求任何ChromeDriver日志(例如性能日志)时收集跟踪事件。缓冲区仍有可能仍然填充,因此ChromeDriver会监控支持的Chrome版本(r263512及更高版本)的缓冲区使用情况。如果缓冲区填满,ChromeDriver将记录警告并将性能日志中的条目添加,如下所述。

收集日志条目

在测试中,您可以获得如下的性能日志条目。有关更多信息,请参阅  WebDriver日志记录文档。

for (LogEntry entry : driver.manage().logs().get(LogType.PERFORMANCE)) {
    System.out.println(entry.toString());
}

每个条目都是以下结构的JSON字符串:

{
    "webview": <originating WebView ID>,
    "message": { "method": "...", "params": { ... }} // DevTools message.
}

方法的值是DevTools事件的方法(参见Chrome远程调试协议文档)。例如,Timeline事件将为协议的所有版本提供Timeline.eventRecorded 方法,包括1.1版本(编写本文时的最新版本)。

跟踪日志条目

从版本1.1开始,跟踪不是已发布的DevTools协议的一部分,因此详细信息如下。由于事件是在浏览器范围内收集的,因此

所有跟踪事件的webview值都将为“浏览器”。

有两种可能的跟踪事件方法:

  • tracing.dataCollected params 将是一个字典形式的单个跟踪事件
  • tracing.bufferUsage params 将包含一个错误键,并带有一条消息,指示在测试期间填充的DevTools跟踪缓冲区,如上所述

下面是一个示例跟踪事件:

{
    "webview":"browser",
    "message":{
        "method":"Tracing.dataCollected",
        "params":{
            "args":{"layerTreeId":1},
            "cat":"cc,devtools",
            "name":"DrawFrame",
            "ph":"i",
            "pid":11405,
            "s":"t",
            "tid":11405,
            "ts":3846117219.0,
            "tts":1134680
        }
    }
}
在Chrome初始化里面加载如下:

if(sandBoxMode!=0){

ChromeOptions options = new ChromeOptions();

LoggingPreferences logPrefs = new LoggingPreferences();

logPrefs.enable(LogType.PERFORMANCE, Level.ALL);

Map<String, Object> perfLogPrefs = new HashMap<String, Object>();

perfLogPrefs.put("traceCategories", "browser,devtools.timeline,devtools"); // comma-separated trace categories

options.setExperimentalOption("perfLoggingPrefs", perfLogPrefs);

options.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);

options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

options.addArguments("lang=zh_CN.UTF-8");

options.addArguments("use-fake-ui-for-media-stream");

options.addArguments("disable-popup-blocking");

options.addArguments("--start-maximized");//设置窗口最大化 新API

// options.addArguments("--headless");

options.addArguments("--no-sandbox");

options.addArguments("--disable-gpu");

options.addArguments("--disable-browser-side-navigation");

options.addArguments("--dns-prefetch-disable");

ChromeOptions capabilities = new ChromeOptions();

capabilities.setCapability(ChromeOptions.CAPABILITY, options);

capabilities.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);

driver = new ChromeDriver(capabilities);

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

driver.manage().timeouts().pageLoadTimeout(80, TimeUnit.SECONDS);

driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);

Log.info("Chrome browser started");

Constants.sResult="PASS";

}else if(sandBoxMode==0){

if(sandBoxMode!=0){ChromeOptions options = new ChromeOptions();LoggingPreferences logPrefs = new LoggingPreferences();logPrefs.enable(LogType.PERFORMANCE, Level.ALL);Map<String, Object> perfLogPrefs = new HashMap<String, Object>();perfLogPrefs.put("traceCategories", "browser,devtools.timeline,devtools"); // comma-separated trace categoriesoptions.setExperimentalOption("perfLoggingPrefs", perfLogPrefs);options.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);options.addArguments("lang=zh_CN.UTF-8");options.addArguments("use-fake-ui-for-media-stream");options.addArguments("disable-popup-blocking");options.addArguments("--start-maximized");//设置窗口最大化 新API// options.addArguments("--headless");options.addArguments("--no-sandbox");options.addArguments("--disable-gpu");options.addArguments("--disable-browser-side-navigation");options.addArguments("--dns-prefetch-disable");ChromeOptions capabilities = new ChromeOptions();capabilities.setCapability(ChromeOptions.CAPABILITY, options);capabilities.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);driver = new ChromeDriver(capabilities);driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);driver.manage().timeouts().pageLoadTimeout(80, TimeUnit.SECONDS);driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);Log.info("Chrome browser started");Constants.sResult="PASS";}else if(sandBoxMode==0){

View Code

调用方法如下:

  LogEntries logEntries = driver.manage().logs().get(LogType.PERFORMANCE);for (LogEntry entry : logEntries) {System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel() + " ======" + entry.getMessage());System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel().INFO + "  INFO======== " + entry.getMessage());System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel().ALL + " ALL ======== " + entry.getMessage());System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel().SEVERE + " SEVERE ======== " + entry.getMessage());System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel().WARNING + " WARNING ======== " + entry.getMessage());//do something useful with the data}

可以参考

转载于:https://www.cnblogs.com/a00ium/p/10858740.html

Selenium自动化获取WebSocket信息相关推荐

  1. 使用Pyecharts进行全国水质TDS地图可视化全过程6:利用Python+Selenium自动化获取页面信息

    本文是扩展文,介绍利用Selenium模拟人工操作,从网页上自动获取信息.这样一种方法可以处理重复性工作,解放双手,提高工作效率.属于使用Pyecharts做可视化之前的一些其他探索. 在利用Exce ...

  2. python爬虫获取服务器信息,通过python自动化获取服务器信息,并写入到excel(示例代码)...

    简介这篇文章主要介绍了通过python自动化获取服务器信息,并写入到excel(示例代码)以及相关的经验技巧,文章约943字,浏览量170,点赞数4,值得参考! 博主目前在电信外包工作,比较坑,因为涉 ...

  3. 通过snmp协议自动化获取服务器硬件信息-python

    前言 最近有个需求,就是在新机器上架的时候,获取硬件信息,用来核对新采购的服务器是否和购买的配置一致.其中包含cpu.内存,硬盘,Raid卡.网卡等硬件信息.由于新机器可能没有装操作系统,考虑到公司使 ...

  4. python selenium自动化获取oracle,python27+selenium3自动化登录测试

    #encoding:utf-8 ''' 方法:通过selenium的webdriver模块结合unittest单元测试框架自动化登录系统,下文枚举了几个测试用例登录情况,其中包括用户名和密码的验证以及 ...

  5. python adb读取手机中短信_python+adb实现自动化获取手机信息

    首先我们先看一下使用adb查看Android手机信息的指令 #获取手机名称 NAME = 'adb shell getprop ro.product.model' #获取手机版本 VERSION = ...

  6. 华为python自动化怎么领取_python+adb实现自动化获取手机信息

    首先我们先看一下使用adb查看Android手机信息的指令 #获取手机名称 NAME = 'adb shell getprop ro.product.model' #获取手机版本 VERSION = ...

  7. Python+selenium 自动化-获取当前页面的url地址,打开指定的url地址

    非常简单,driver.current_url 就能获取当前页面的 url 地址. # 调用chrome浏览器 driver = webdriver.Chrome() # 打开指定的url地址 dri ...

  8. python selenium自动化获取oracle_Python+selenium2 自动化测试登录

    from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from se ...

  9. chrome 控制台信息获取 python_【python+selenium自动化】设置Chrome启动参数

    起因:直接用selenium的webdriver启动chrome,会弹出"Chrome正在受到自动软件的控制",并且窗口较小,是因为chrome没有加载任何配置 解决:点进sele ...

最新文章

  1. sql server 表索引碎片处理
  2. gns3 查看网关_gns3常用命令
  3. 23种设计模式C++实现
  4. 开源的ESB产品列表信息
  5. 禁用内置键盘_如何禁用Windows 10的所有内置广告
  6. linux下把进程注册成服务,用service 调用
  7. Linux 环境下maven安装配置
  8. 极光推送指定用户推送_苹果推送iOS 12.1.4和macOS 10.14.3修复FaceTime 国内用户可酌情...
  9. python教学ppt百度云_python教程ppt百度云盘-Python教程ppt课件类型的
  10. echart——时间点和时间段综合显示
  11. 51单片机电路原理图_51单片机入门(第1篇):纯干货,单片机最小系统
  12. android开机画面在uboot里吗,iTOP-6818开发板-Android5.1修改uboot和内核开机LOGO
  13. php项目代做,代做PHP开发技术程序、php网站代码代写
  14. 揭露富爸爸背后真正的秘密
  15. APS车间排产软件实现企业生产数据可视化
  16. “蔚来杯“2022牛客暑期多校训练营5 A题: Don‘t Starve
  17. 小说更新太慢怎么办_这几部小说因更新太慢,惹得书迷大怒,粉丝扬言要打断作者的腿!...
  18. 水仙花数的实现(python)
  19. 大数据平台数据治理体系建设和管理方案
  20. 人在国外能买阿里云服务器吗?

热门文章

  1. 【LightOJ - 1030】Discovering Gold(概率dp,数学期望,期望的线性性)
  2. *【POJ - 2796】 Feel Good (前缀和优化+单调栈维护)
  3. 【洛谷 - 快来签到】(数学,公式,溢出爆longlong的处理)
  4. 【PAT - 1014】福尔摩斯的约会(简单模拟)
  5. 【Codeforces - 632C】The Smallest String Concatenation (对string巧妙排序)
  6. 永远年轻,永远热泪盈眶----致所有奋斗的ACMer
  7. 【POJ - 3321】 Apple Tree(dfs序 + 线段树维护 或 dfs序 + 树状数组维护)
  8. 人脑意识转入量子计算机,人脑产生意识:可能是因为量子纠缠
  9. esxi服务器与虚拟机时间不符,vsphere6.7-虚拟机与ESXI时间同步
  10. java恶搞程序半成品,打开将程序本身写到c盘隐藏,并设置开机启动项。可无限开机,可加影藏cmd while死循环 卡爆cpu