get_log(‘performance‘) 不能用了,改用seleniumwire

由于selenium从3.141升级到高版本后,查日志的方法不能用了。
改用 seleniumwire 直接获取请求头 request.headers。
例如查找请求头headers中的一个key,‘’Authorization‘’

selenium 低版本中,获取请求头的信息是这样:

from selenium import webdriver
caps = {
        'browserName': 'chrome',
        'loggingPrefs': {
            'browser': 'ALL',
            'driver': 'ALL',
            'performance': 'ALL',
        },
        'goog:chromeOptions': {
            'perfLoggingPrefs': {
            'enableNetwork': True,
            },
            'w3c': False,
        },
    }
 browser = webdriver.Chrome(desired_capabilities=caps)  
 inf = browser.get_log('performance')  #这次是清空日志
 browser.get('http://.....') 
 inf = browser.get_log('performance')  #这次是真的
 for i in inf:
    dic_info = json.loads(i["message"])  # 把json格式转成字典。
    info = dic_info["message"]['params']  # request 信息,在字典的 键 ["message"]['params'] 中。
    if 'request' in info:  # 如果找到了 request 信息,就终断循环。
        if info['request'].get('method')=='POST' and \
           info['request'].get('url')=='http://....':
            headers = info['request'].get('headers')
            if 'Authorization' in headers:
                Authorization_str=headers['Authorization']
                break

高版本的selenium 中,browser.get_log(‘performance’) 已经不能用了。
改为如下方式:

from seleniumwire import webdriver  #pip install selenium-wire
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('http://....') #打开

#获取Authorization_str
Authorization_str=''
for request in  browser.requests:  #遍历所有 请求
    # if request.method == 'POST' and \
    #    request.url == 'http://....': #找到这个请求
        if 'Authorization' in request.headers: #有这个标志
            Authorization_str = request.headers['Authorization']  #找到了结果
            break


要点:
1、装完selenium后,还得装selenium-wire

   from seleniumwire import webdriver  #pip install selenium-wire
代替
   from selenium import webdriver

2、仅browser 使用 seleniumwire
其他都不变,例如 By、keys等还用selenium

2022.12.21
selenium Ver 4.7.2
selenium-wire Ver 5.1.0 测试成功

你可能感兴趣的:(Day,Day,Up,爬虫,python,chrome,开发语言)