Selenium自动化获取WebSocket信息
性能日志
|
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);启用后,性能日志将收集时间轴,网络和页面事件。要同时启用跟踪或自定义性能日志记录,请参阅以下部分。使用默认选项 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);
您还可以使用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值都将为“浏览器”。 有两种可能的跟踪事件方法:
下面是一个示例跟踪事件: { "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!=){
调用方法如下: LogEntries logEntries = driver.manage().logs().get(LogType.PERFORMANCE);
for (LogEntry entry : logEntries) {
可以参考 |
Selenium自动化获取WebSocket信息的更多相关文章
- Python+Selenium自动化-获取页面信息
Python+Selenium自动化-获取页面信息 1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import t ...
- Python+selenium之获取验证信息
通常获取验证信息用得最多的几种验证信息分别是title,URL和text.text方法用于获取标签对之间的文本信息. 代码如下: from selenium import webdriverimpor ...
- Selenium自动化获取Http报文信息并判断当前API状态
public int loadingFinishedCount(WebDriver driver){ LogEntries logs = driver.manage().logs().get(&quo ...
- Python+selenium之获取请求信息
basicConfig()所捕获的log信息.不过其开启的debug模式只能捕获到客户端像服务器发送的post()请求,而无法获取服务器所返回的应答信息. from random import ran ...
- python+adb实现自动化获取手机信息
首先我们先看一下使用adb查看Android手机信息的指令 #获取手机名称NAME = 'adb shell getprop ro.product.model'#获取手机版本VERSION = 'ad ...
- Python2.6.6执行selenium自动化
系统类型: [root@bogon home]# uname -aLinux bogon 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 20 ...
- 如何记录selenium自动化测试过程中接口的调用信息
上一篇博客,我写了python自动化框架的一些知识和粗浅的看法,在上一篇中我也给自己提出一个需求:如果记录在测试过程中接口的调用情况?提出这个需求,我觉得是有意义的.你在测试过程中肯定会遇到一些莫名其 ...
- Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)
Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ...
- Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)
通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参 ...
随机推荐
- Java如何正确的将数值转化为ArrayList?
Java中使用工具类Arrays.asList()看似可以把一个数组转为List,但实际使用时有两个坑:1.它是泛型方法,传入的参数必须是对象数组,当传入一个原生数据类型数组时,Arrays.asLi ...
- 【后缀数组】【SP1811】 LCS - Longest Common Substring
题目链接 题意翻译 输入2 个长度不大于250000的字符串,输出这2 个字符串的最长公共子串.如果没有公共子串则输出0 . 思路 求两个串的最长公共子串 代码 #include<iostrea ...
- Cobaltstrike与Metasploit会话转换
这里只做记录,不做详解 0x00 实验环境 被控制机:192.168.126.129 Metasploit:192.168.126.128 Cobaltstrike:182...* 0x01 CS会话 ...
- 随机采样方法整理与讲解(Acceptance-Rejection、MCMC、Gibbs Sampling等)
本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比我好,大家可以看一下!好东西多分享!PRML的第11章也是sampling,有时间后面写到P ...
- mysql 遍历所有表并条件查询
use eepm_push; DROP PROCEDURE IF EXISTS FountTable; delimiter $$ create procedure FountTable() begin ...
- Linux 文件系统磁盘空间与连接文件
磁盘与目录的容量 我们知道磁盘的整体数据hi在superblock块中,但是各文件的容量则在inode中记载. df:列出文件系统的整体磁盘使用量 由于df主要读取的数据几乎都是针对整个文件系统,因此 ...
- 刷题记录:[ByteCTF 2019]EZCMS
目录 刷题记录:[ByteCTF 2019]EZCMS 一.知识点 1.源码泄露 2.MD5长度扩展攻击 3.php://filter绕过正则实现phar反序列化 刷题记录:[ByteCTF 2019 ...
- ubuntu之路——day17.2 RGB图像的卷积、多个filter的输出、单个卷积层的标记方法
和单层图像的卷积类似,只需要对每一个filter构成的三层立方体上的每一个数字与原图像对应位置的数字相乘相加求和即可. 在这个时候可以分别设置filter的R.G.B三层,可以同时检测纵向或横向边缘, ...
- SSM框架中,ContextLoaderListener与RequestContextListener的联系与区别
在整合SSM框架时,我们要在web.xml文件中对spring进行相关配置. 首先要配置一个<context-param></context-param> <!--加载s ...
- 【CNN】--- 卷积过程中RGB与灰度的区别
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/hacker_Dem_br/article/ ...
