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

啟用后,性能日志將收集時間軸,網絡和頁面事件。要同時啟用跟蹤或自定義性能日志記錄,請參閱以下部分。使用默認選項

查看性能日志記錄的完整示例(信用: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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448984.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448984.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448984.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

零負債之人的10個習慣

無論你是已下定決心要于今年實現零負債&#xff0c;還是距離這個目標的實現有很長的路要走&#xff0c;能受到啟發總是好事。 看看你認識的已經過上“無債一身輕”生活的人──朋友、家人、同事或是你認為可能與其他無負債之人具有類似品質的人。 下文為無負債之人的10個共同…

《App后臺開發運維與架構實踐》第3章 App后臺核心技術

2019獨角獸企業重金招聘Python工程師標準>>> 3.1 用戶驗證方案 3.1.1 使用HTTPS協議 HTTPS協議是“HTTP協議”和“SSL/TLS”的組合。SSL&#xff08;Secure Sockets Layer&#xff09;&#xff0c;即安全套接層&#xff0c;是為了解決因HTTP協議是明文而導致傳輸內容…

IntelliJ IDEA 配置 JDK

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 提前安裝jdk&#xff0c;配置環境變量 一、配置jdk 1、依次點開File -->Project Structure&#xff0c;點擊左側標簽頁&#xff0c…

xml編輯無提示?這么破!

在學習testng這個單元測試框架時&#xff0c;如果咱們碰到了編輯測試套件xml&#xff0c;不提示的情況&#xff08;有提示方便咱們學習&#xff0c;并且testng的測試套件定義必須按照他的dtd文件約束來&#xff09;&#xff0c;咱們可以按照下面的步驟去解決這個問題。 1.檢查t…

“云棲直播”升級為“公開課”

直播平臺是面向廣大開發者的視頻學習平臺&#xff0c;幫助廣大開發者學習最新技術&#xff0c;了解最新阿里云產品以及最新技術發展趨勢&#xff0c;幫助開發者們不斷學習與成長。截止到2019年3月&#xff0c;直播共進行800余場&#xff0c;觀看人次100萬。  社區將對“云棲直…

遭銀行賬號詐騙最快最有效自救法

銀行卡或賬戶詐騙案件層出不窮&#xff0c;當匯錯款時該怎么做&#xff0c;切記以下方法&#xff1a; 一、當匯錯款或被騙匯款后&#xff0c;最快最有效的緊急自救法&#xff1a;當你把自己的錢不小心匯到了不該匯的人卡上&#xff0c;或者被騙子忽悠而把錢匯給了騙子&#xf…

SQL 判斷非空 NULL :IFNUL( ) 、COALESCE( ) 、ISNULL( ) 、NVL( )

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. mysql 支持&#xff1a; IFNULL&#xff08;&#xff09;、COALESCE&#xff08;&#xff09; 如 IFNULL(UnitsOnOrder, 0) 或者 CO…

navigator.geolocation的應用 - 將定位信息顯示在百度地圖上

在學習navigator.geolocation的時候&#xff0c;有一個實例是獲取坐標后顯示在谷歌地圖上。眾所周知&#xff0c;谷歌地圖國內并不能直接訪問&#xff0c;得用特殊手段&#xff0c;那我要測試的時候還要開著梯子挺麻煩的&#xff0c;想給別人用也得那個人能訪問谷歌地圖先。 地…

centos7 mysql數據庫安裝和配置

2019獨角獸企業重金招聘Python工程師標準>>> 一、系統環境 yum update升級以后的系統版本為 [rootyl-web yl]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) 二、mysql安裝 一般網上給出的資料都是 #yum install mysql #yum install mysql-serve…

5種聰明工作法

1、每天最多做三件事 請拿出你落落長的待辦清單&#xff0c;圈出最重要的一~三件事&#xff0c;然后給自己一天的時間&#xff0c;卯足全力解決它! 你不需要因為還有很多事要做而焦慮&#xff0c;只需要專注今天、當下、以及最重要的問題。 《與成功有約》作者史蒂芬.柯維(Step…

【Quartz】Quartz概述及入門實例

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Quartz 在開源任務調度框架中的翹首&#xff0c;它提供了強大任務調度機制&#xff0c;難能可貴的是它同時保持了使用的簡單性。Quartz 允…

python中del語句

有一種方式可以從列表按照給定的索引而不是值來移除一個元素: 那就是 del 語句。 它不同于會返回一個值的 pop() 方法。 del 語句也可以用來從列表中移除切片或者清空整個python列表&#xff08;我們之前用過的方式是將一個空列表賦值給指定的切片&#xff09;。 例如: >>…

偷時間的孩子

從事臨床心理工作已有十三、四年(至一九九五年)&#xff0c;真的有很多話想跟父母們敞開心扉的談談。 忙碌的現代社會&#xff0c;讓我窺探到了許許多多的杰出角色&#xff0c;他們偷取家庭時間去換取自己的功成名就&#xff0c;他們的心隨著公司的企劃案四處流浪&#xff0c;孩…

關于openstack 專業博主地址.后續更新

首先官方文檔要放的https://docs.openstack.org/ 關于導入鏡像方面說的很詳細的.https://www.cnblogs.com/liawne/p/9322221.html 每天5分鐘系列,有docker openstack等,而且還出書了.https://www.cnblogs.com/CloudMan6/p/5384923.html 轉載于:https://www.cnblogs.com/lovesKe…

Java第一章java語言的概述

一、java語言的概述&#xff1a; 1.1dos命令 常用的dos命令&#xff1a; dir&#xff1a;列出當前目錄下的文件以及文件夾 md&#xff1a;創建目錄 rd&#xff1a;刪除目錄 cd&#xff1a;進入指定目錄 cd..&#xff1a;退回到上一級目錄 cd\&#xff1a;退回到根目錄 del&…

【Quartz】深入Job、JobDetail、JobDataMap、Trigger

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Quartz API核心接口有&#xff1a; Scheduler – 與scheduler交互的主要API&#xff1b;Job – 你通過scheduler執行任務&#xff0c;你…

Apache Accumulo 1.9.3 發布,高性能 K/V 存儲方案

Apache Accumulo 1.9.3 發布了&#xff0c;Apache Accumulo 是一個可靠的、可伸縮的、高性能的排序分布式的 Key-Value 存儲解決方案&#xff0c;基于單元訪問控制以及可定制的服務器端處理。使用 Google BigTable 設計思路&#xff0c;基于 Apache Hadoop、Zookeeper 和 Thrif…

圖形界面上機作業

1、 制作一個如圖所示的界面&#xff08;使用FlowLayout布局&#xff09;&#xff0c;不要求實現功能。 2、設計一個用標簽、文本行與按鈕來登錄的界面&#xff08;用GridLayout布局方式&#xff09;。如圖所示。 轉載于:https://www.cnblogs.com/quan-2723365710/p/10881691.h…

【Quartz】Spring3.2.9 + Quqrtz2.2.1 實現定時實例

一、工程創建 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、新建一個工程&#xff0c;導入相應的包Spring3.2.9Quqrtz2.2.1commons-logging 集成起來比較簡單,對線程無需任何理解&a…

第七次發博不知道用什么標題好

一、this關鍵字,想起之前總是搞不懂this.name是where.name,嗯&#xff01;第二個name就是形參name,所以這句話就是講形參name的值傳給成員變量name private void setName(String name ){ this.namename; } 二、構造方法&#xff1a;1.沒有返回值 2.名稱要與本類名稱相同&#x…