如何使用Selenium仅获取当前URL对应的请求头?
仅获取当前页面URL对应请求头的解决方案
你当前的代码会遍历SeleniumWire捕获的所有请求并输出请求头,要只获取driver.current_url对应的请求头,可以通过匹配请求的url属性与当前页面URL来实现,具体修改如下:
修改后的完整代码
from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from seleniumwire import webdriver import time chrome_options = Options() chrome_options.add_argument("--incognito") chrome_options.add_argument("--window-size=1920x1080") driver = webdriver.Chrome(chrome_options=chrome_options) url = "https://premierrem.managebuilding.com/manager/public/authentication/login" driver.get(url) time.sleep(5) # 登录操作 find_email_field = driver.find_element_by_id("emailAddressInput") find_email_field.send_keys("abc@gmail.com") find_password_field = driver.find_element_by_id("passwordInput") find_password_field.send_keys("abc@123") time.sleep(5) driver.find_element_by_xpath('//button[contains(text(), "Sign in")]').click() time.sleep(20) # 进入目标页面 driver.find_element_by_link_text("Maintenance").click() driver.find_element_by_id("lnk_Workorders").click() current_url = driver.current_url print(f"当前页面URL:{current_url}") # 过滤出当前URL对应的请求头 for request in driver.requests: # 精确匹配请求URL与当前页面URL if request.url == current_url: print("当前页面请求头:") print(request.headers) break # 找到目标请求后退出循环,避免多余遍历
关键说明
- SeleniumWire捕获的每个
request对象都包含url属性,直接与driver.current_url做精确匹配即可定位到当前页面的加载请求。 - 添加
break是因为当前页面的加载请求通常只会出现一次,找到后无需继续遍历所有请求,提升效率。 - 如果遇到精确匹配失败的情况(比如存在URL参数动态变化、重定向等场景),可以改用包含匹配:
if current_url in request.url,但这种方式可能会匹配到相关的资源请求,需要根据实际情况调整。
内容的提问来源于stack exchange,提问作者Ajay
相关产品推荐
相关产品推荐

