国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Selenium自動化測試中如何抓取網(wǎng)絡(luò)請求響應(yīng)及WebSocket信息

這篇具有很好參考價值的文章主要介紹了Selenium自動化測試中如何抓取網(wǎng)絡(luò)請求響應(yīng)及WebSocket信息。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

我們在使用Selenium測試Web或Electronjs/Cef框架應(yīng)用時,有時候操作一個元素需要判斷是否發(fā)送了請求以及請求的參數(shù)是否正確

我們可以通過,開啟Chrome的性能日志來然后配合driver.get_log("performance")來查看請求,然后對Network相關(guān)的日子進(jìn)行過濾,
實現(xiàn)如下:

獲取Chrome性能日志

import json
from pprint import pprint
from selenium import webdriver

caps = {
    'browserName': 'chrome',
    'version': '',
    'platform': 'ANY',
    'goog:loggingPrefs': {'performance': 'ALL'},   # 記錄性能日志
    'goog:chromeOptions': {'extensions': [], 'args': ['--headless']}  # 無界面模式
}

driver = webdriver.Chrome(desired_capabilities=caps)

driver.get('https://httpbin.org/get')
logs = driver.get_log("performance")
for item in logs:
    log = json.loads(item["message"])["message"]
    pprint(log)
    if "Network.response" in log["method"] or "Network.request" in log["method"] or "Network.webSocket" in log["method"]:
        pprint(log)

運(yùn)行結(jié)果如下:

{'method': 'Network.responseReceived',
 'params': {'frameId': '2445B94E9E1DB51A1B1F4F3B0A3F03F5',
            'loaderId': 'D0DE1754D5C5F1E54DC3B0DB2A09ADD6',
            'requestId': 'D0DE1754D5C5F1E54DC3B0DB2A09ADD6',
            'response': {'connectionId': 0,
                         'connectionReused': False,
                         'encodedDataLength': -1,
                         'fromDiskCache': False,
                         'fromPrefetchCache': False,
                         'fromServiceWorker': False,
                         'headers': {'Content-Type': 'text/plain;charset=US-ASCII'},
                         'mimeType': 'text/plain',
                         'protocol': 'data',
                         'remoteIPAddress': '',
                         'remotePort': 0,
                         'securityState': 'secure',
                         'status': 200,
                         'statusText': 'OK',
                         'url': 'data:,'},
            'timestamp': 57524.763168,
            'type': 'Document'}}
{'method': 'Network.requestWillBeSent',
 'params': {'documentURL': 'https://httpbin.org/get',
            'frameId': '2445B94E9E1DB51A1B1F4F3B0A3F03F5',
            'hasUserGesture': False,
            'initiator': {'type': 'other'},
            'loaderId': '8BB61F3D2448E8BC91A4A5AD7E690673',
            'request': {'headers': {'Upgrade-Insecure-Requests': '1',
                                    'User-Agent': 'Mozilla/5.0 (Macintosh; '
                                                  'Intel Mac OS X 10_15_7) '
                                                  'AppleWebKit/537.36 (KHTML, '
                                                  'like Gecko) '
                                                  'HeadlessChrome/91.0.4472.114 '
                                                  'Safari/537.36'},
                        'initialPriority': 'VeryHigh',
                        'method': 'GET',
                        'mixedContentType': 'none',
                        'referrerPolicy': 'strict-origin-when-cross-origin',
                        'url': 'https://httpbin.org/get'},
            'requestId': '8BB61F3D2448E8BC91A4A5AD7E690673',
            'timestamp': 57524.961438,
            'type': 'Document',
            'wallTime': 1626501610.512192}}
{'method': 'Network.requestWillBeSentExtraInfo',
 'params': {'associatedCookies': [],
            'headers': {':authority': 'httpbin.org',
                        ':method': 'GET',
                        ':path': '/get',
                        ':scheme': 'https',
                        'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
                        'accept-encoding': 'gzip, deflate, br',
                        'accept-language': 'en-US',
                        'sec-fetch-dest': 'document',
                        'sec-fetch-mode': 'navigate',
                        'sec-fetch-site': 'none',
                        'sec-fetch-user': '?1',
                        'upgrade-insecure-requests': '1',
                        'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X '
                                      '10_15_7) AppleWebKit/537.36 (KHTML, '
                                      'like Gecko) '
                                      'HeadlessChrome/91.0.4472.114 '
                                      'Safari/537.36'},
            'requestId': '8BB61F3D2448E8BC91A4A5AD7E690673'}}
{'method': 'Network.responseReceivedExtraInfo',
 'params': {'blockedCookies': [],
            'headers': {'access-control-allow-credentials': 'true',
                        'access-control-allow-origin': '*',
                        'content-length': '754',
                        'content-type': 'application/json',
                        'date': 'Sat, 17 Jul 2021 06:00:11 GMT',
                        'server': 'gunicorn/19.9.0'},
            'requestId': '8BB61F3D2448E8BC91A4A5AD7E690673',
            'resourceIPAddressSpace': 'Public'}}
{'method': 'Network.responseReceived',
 'params': {'frameId': '2445B94E9E1DB51A1B1F4F3B0A3F03F5',
            'loaderId': '8BB61F3D2448E8BC91A4A5AD7E690673',
            'requestId': '8BB61F3D2448E8BC91A4A5AD7E690673',
            'response': {'connectionId': 12,
                         'connectionReused': False,
                         'encodedDataLength': 123,
                         'fromDiskCache': False,
                         'fromPrefetchCache': False,
                         'fromServiceWorker': False,
                         'headers': {'access-control-allow-credentials': 'true',
                                     'access-control-allow-origin': '*',
                                     'content-length': '754',
                                     'content-type': 'application/json',
                                     'date': 'Sat, 17 Jul 2021 06:00:11 GMT',
                                     'server': 'gunicorn/19.9.0'},
                         'mimeType': 'application/json',
                         'protocol': 'h2',
                         'remoteIPAddress': '52.201.75.114',
                         'remotePort': 443,
                         'requestHeaders': {':authority': 'httpbin.org',
                                            ':method': 'GET',
                                            ':path': '/get',
                                            ':scheme': 'https',
                                            'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
                                            'accept-encoding': 'gzip, deflate, '
                                                               'br',
                                            'accept-language': 'en-US',
                                            'sec-fetch-dest': 'document',
                                            'sec-fetch-mode': 'navigate',
                                            'sec-fetch-site': 'none',
                                            'sec-fetch-user': '?1',
                                            'upgrade-insecure-requests': '1',
                                            'user-agent': 'Mozilla/5.0 '
                                                          '(Macintosh; Intel '
                                                          'Mac OS X 10_15_7) '
                                                          'AppleWebKit/537.36 '
                                                          '(KHTML, like Gecko) '
                                                          'HeadlessChrome/91.0.4472.114 '
                                                          'Safari/537.36'},
                         'responseTime': 1626501611316.694,
                         'securityDetails': {'certificateId': 0,
                                             'certificateTransparencyCompliance': 'unknown',
                                             'cipher': 'AES_128_GCM',
                                             'issuer': 'Amazon',
                                             'keyExchange': 'ECDHE_RSA',
                                             'keyExchangeGroup': 'P-256',
                                             'protocol': 'TLS 1.2',
                                             'sanList': ['httpbin.org',
                                                         '*.httpbin.org'],
                                             'signedCertificateTimestampList': [],
                                             'subjectName': 'httpbin.org',
                                             'validFrom': 1608508800,
                                             'validTo': 1642636799},
                         'securityState': 'secure',
                         'status': 200,
                         'statusText': '',
                         'timing': {'connectEnd': 548.386,
                                    'connectStart': 26.524,
                                    'dnsEnd': 26.524,
                                    'dnsStart': 14.11,
                                    'proxyEnd': -1,
                                    'proxyStart': -1,
                                    'pushEnd': 0,
                                    'pushStart': 0,
                                    'receiveHeadersEnd': 803.146,
                                    'requestTime': 57524.962922,
                                    'sendEnd': 548.745,
                                    'sendStart': 548.611,
                                    'sslEnd': 548.36,
                                    'sslStart': 277.934,
                                    'workerFetchStart': -1,
                                    'workerReady': -1,
                                    'workerRespondWithSettled': -1,
                                    'workerStart': -1},
                         'url': 'https://httpbin.org/get'},
            'timestamp': 57525.76746,
            'type': 'Document'}}

獲取請求及響應(yīng)信息

由于日志中沒有接口后臺數(shù)據(jù)和響應(yīng)數(shù)據(jù),我們可以通過執(zhí)行cdp名利獲取,修改后代碼如下

import json
from pprint import pprint
from selenium import webdriver
from selenium.common.exceptions import WebDriverException


caps = {
    'browserName': 'chrome',
    'version': '',
    'platform': 'ANY',
    'goog:loggingPrefs': {'performance': 'ALL'},
    'goog:chromeOptions': {'extensions': [], 'args': ['--headless']}
}

driver = webdriver.Chrome(desired_capabilities=caps)

driver.get('https://httpbin.org/get')
logs = driver.get_log("performance")
for item in logs:
    log = json.loads(item["message"])["message"]
    # if "Network.response" in log["method"] or "Network.request" in log["method"] or "Network.webSocket" in log["method"]:
        # pprint(log)
    if log["method"] == 'Network.responseReceived':
        url = log['params']['response']['url']
        if url == 'data:,':  # 過濾掉初始data頁面,后續(xù)可以根據(jù) log['params']['response']['type']過濾請求類型
            continue
        print('請求', url)
        request_id = log['params']['requestId']

        request_headers = log['params']['response']['requestHeaders']
        response_headers = log['params']['response']['headers']
        response_time = log['params']['response']['responseTime']
        status_code = log['params']['response']['status']

        try:
            request_data = driver.execute_cdp_cmd('Network.getRequestPostData', {'requestId': request_id})
        except WebDriverException:  # 沒有后臺數(shù)據(jù)獲取時會有異常
            request_data = None

        response_body = driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': request_id})['body']
        print('響應(yīng)', response_body)

執(zhí)行后顯示如下:

請求 https://httpbin.org/get
響應(yīng) {
  "args": {}, 
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", 
    "Accept-Encoding": "gzip, deflate, br", 
    "Accept-Language": "en-US", 
    "Cache-Control": "max-age=0", 
    "Host": "httpbin.org", 
    "Sec-Fetch-Dest": "document", 
    "Sec-Fetch-Mode": "navigate", 
    "Sec-Fetch-Site": "none", 
    "Sec-Fetch-User": "?1", 
    "Upgrade-Insecure-Requests": "1", 
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/91.0.4472.114 Safari/537.36", 
    "X-Amzn-Trace-Id": "Root=1-60f2dd9d-6533f9526707f25f7d6c38de"
  }, 
  "origin": "123.118.150.190", 
  "url": "https://httpbin.org/get"
}

實戰(zhàn)案例

光學(xué)理論是沒用的,要學(xué)會跟著一起敲,要動手實操,才能將自己的所學(xué)運(yùn)用到實際當(dāng)中去,這時候可以搞點(diǎn)實戰(zhàn)案例來學(xué)習(xí)。

selenium獲取請求響應(yīng),selenium,自動化測試,selenium,websocket,chromeselenium獲取請求響應(yīng),selenium,自動化測試,selenium,websocket,chrome

如果對你有幫助的話,點(diǎn)個贊收個藏,給作者一個鼓勵。也方便你下次能夠快速查找。

如有不懂還要咨詢下方小卡片,博主也希望和志同道合的測試人員一起學(xué)習(xí)進(jìn)步

在適當(dāng)?shù)哪挲g,選擇適當(dāng)?shù)膷徫?,盡量去發(fā)揮好自己的優(yōu)勢。

我的自動化測試開發(fā)之路,一路走來都離不每個階段的計劃,因為自己喜歡規(guī)劃和總結(jié),

測試開發(fā)視頻教程、學(xué)習(xí)筆記領(lǐng)取傳送門?。?!
selenium獲取請求響應(yīng),selenium,自動化測試,selenium,websocket,chrome文章來源地址http://www.zghlxwxcb.cn/news/detail-594865.html

到了這里,關(guān)于Selenium自動化測試中如何抓取網(wǎng)絡(luò)請求響應(yīng)及WebSocket信息的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • selenium 自動化測試:如何搭建自動化測試環(huán)境,搭建環(huán)境過程應(yīng)該注意的問題

    selenium 自動化測試:如何搭建自動化測試環(huán)境,搭建環(huán)境過程應(yīng)該注意的問題

    最近也有很多人私下問我,selenium學(xué)習(xí)難嗎,基礎(chǔ)入門的學(xué)習(xí)內(nèi)容很多是3以前的版本資料,對于有基礎(chǔ)的人來說,3到4的差別雖然有,但是不足以影響自己,但是對于沒有學(xué)過的人來說,通過資料再到自己寫的代碼,發(fā)現(xiàn)有些東西沒有,有些方法又不相同,導(dǎo)致腳本不能運(yùn)行

    2024年02月10日
    瀏覽(24)
  • 如何使用Python自動化測試工具Selenium進(jìn)行網(wǎng)頁自動化?

    如何使用Python自動化測試工具Selenium進(jìn)行網(wǎng)頁自動化?

    Selenium 是一個流行的Web自動化測試框架, 它支持多種編程語言和瀏覽器,并提供了豐富的API和工具來模擬用戶在瀏覽器中的行為 。 Selenium可以通過代碼驅(qū)動瀏覽器自動化測試流程,包括頁面導(dǎo)航、元素查找、數(shù)據(jù)填充、點(diǎn)擊操作等。 與PyAutoGUI和AutoIt相比, Selenium更適合于處

    2023年04月09日
    瀏覽(111)
  • 什么是Selenium?如何使用Selenium進(jìn)行自動化測試?

    什么是Selenium?如何使用Selenium進(jìn)行自動化測試?

    ??Selenium 是一種開源工具,用于在 Web 瀏覽器上執(zhí)行自動化測試(使用任何 Web 瀏覽器進(jìn)行 Web 應(yīng)用程序測試)。 ??等等,先別激動,讓我再次重申一下,Selenium 僅可以測試Web應(yīng)用程序。我們既不能使用 Selenium 測試任何桌面(軟件)應(yīng)用程序,也不能測試任何移動應(yīng)用程

    2024年02月02日
    瀏覽(31)
  • 如何使用自動化測試工具Selenium?

    如何使用自動化測試工具Selenium?

    哈嘍,大家好,我是小浪。那么有一段時間沒有更新了,還是在忙實習(xí)和秋招的事情,那么今天也是實習(xí)正式結(jié)束啦,開始繼續(xù)更新我們的學(xué)習(xí)博客,后期主要是開發(fā)和測試的學(xué)習(xí)博客內(nèi)容巨多,感興趣的小伙伴們可以一鍵三連支持一下歐~ 目錄 一、什么是自動化測試? 二、

    2024年02月11日
    瀏覽(100)
  • Selenium如何用于編寫自動化測試腳本?

    Selenium如何用于編寫自動化測試腳本?它提供了許多測試工具和API,可以與瀏覽器交互,模擬用戶操作,檢查網(wǎng)頁的各個方面。下面是一些步驟,可以幫助你編寫Selenium自動化測試腳本。 1、安裝Selenium庫和瀏覽器驅(qū)動程序 首先,你需要安裝Selenium庫和瀏覽器驅(qū)動程序,例如C

    2024年02月09日
    瀏覽(23)
  • 擁抱自動化測試,快速升職加薪丄Selenium+Pytest自動化測試框架教你如何做到

    擁抱自動化測試,快速升職加薪丄Selenium+Pytest自動化測試框架教你如何做到

    引言 Selenium+Pytest自動化測試框架是目前最流行的自動化測試工具之一,其強(qiáng)大的功能和易用性援助許多開發(fā)人員和測試人員。 selenium自動化+ pytest測試框架禪道實戰(zhàn) 選用的測試網(wǎng)址為我電腦本地搭建的禪道 conftest.py更改 config.ini更改 conf.py更改 page更改 page_element更改 page_obje

    2023年04月24日
    瀏覽(19)
  • Selenium 自動化測試如何優(yōu)雅的解決圖片驗證碼問題

    Selenium 自動化測試如何優(yōu)雅的解決圖片驗證碼問題

    說到自動化測試那一定避不開登陸注冊頁面,而大多數(shù)情況下這兩個簡單的頁面都存在一個小困難就是驗證碼,以前我的解決辦法都是在測試環(huán)境粗暴的寫死一個萬能驗證碼,或者給程序一個10秒鐘的線程阻塞,手動輸入驗證碼以跳過這個步驟。這樣就可以不那么優(yōu)雅的實現(xiàn)

    2024年02月14日
    瀏覽(22)
  • 從零開始學(xué)習(xí):如何使用Selenium和Python進(jìn)行自動化測試?

    從零開始學(xué)習(xí):如何使用Selenium和Python進(jìn)行自動化測試?

    安裝selenium 打開命令控制符輸入:pip install -U selenium 火狐瀏覽器安裝firebug:www.firebug.com,調(diào)試所有網(wǎng)站語言,調(diào)試功能 Selenium IDE 是嵌入到Firefox 瀏覽器中的一個插件,實現(xiàn)簡單的瀏覽器操 作的錄制與回放功能,IDE 錄制的腳本可以可以轉(zhuǎn)換成多種語言,從而幫助我們快速的開

    2024年04月23日
    瀏覽(38)
  • 如何使用jenkins、ant、selenium、testng搭建自動化測試框架

    如何使用jenkins、ant、selenium、testng搭建自動化測試框架

    如果在你的理解中自動化測試就是在eclipse里面講webdriver的包引入,然后寫一些測試腳本,這就是你所說的自動化測試,其實這個還不能算是真正的自動化測試,你見過每次需要運(yùn)行的時候還需要打開eclipse然后去選擇運(yùn)行文件嗎?沒有吧!應(yīng)為那樣真的是很low的!下面說一下

    2024年04月16日
    瀏覽(25)
  • 【selenium自動化測試】如何定位頁面元素,及對頁面元素的操作方法

    【selenium自動化測試】如何定位頁面元素,及對頁面元素的操作方法

    selenium元素定位 ?selenium定位元素的方式有8種。 fild_element(by,value):by表示使用的定位方式,定位方式可以參見By類。value表示值,例如:根據(jù)id定位 By.ID,value=id屬性的值。該方法返回元素對象,返回值如下: 這個返回結(jié)果說明:返回值為WebElement類的對象,元素在使用方法時

    2024年02月10日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包