登录为图片验证时,selenium通过token直接进入页面操作

在 Selenium 中,如果你想在打开浏览器时携带 Token(通常是访问 API 或 Web 服务的认证凭据),你可以通过以下几种方式实现,具体取决于你的应用场景。以下是常见的几种方法:


1. 通过 URL 传递 Token(适用于支持 Token 的 Web 服务)

如果目标网页支持通过 URL 参数传递 Token(例如通过查询参数 ?token=your_token),你可以直接在打开浏览器时构造带有 Token 的 URL。

示例代码(Python):
复制代码
from selenium import webdriver

token = "your_token_here"
url = f"https://example.com/dashboard?token={token}"

driver = webdriver.Chrome()
driver.get(url)

2. 通过请求头(Headers)携带 Token(适用于需要自定义请求头的场景)

如果网页要求在请求头中携带 Token(例如 Authorization: Bearer your_token),Selenium 本身不支持直接设置请求头,但可以通过以下方法间接实现:

方法一:使用浏览器扩展(如 mitmproxybrowsermob-proxy

使用代理工具在请求中添加自定义请求头。这里以 browsermob-proxy 为例:

示例代码(Python):
  1. 安装依赖:

    复制代码
    pip install browsermob-proxy selenium
  2. Python 示例代码:

    复制代码
    from browsermobproxy import Server
    from selenium import webdriver
    import os
    
    # 启动 browsermob-proxy 服务器
    server = Server(path="path_to_browsermob-proxy", options={'port': 8080})
    server.start()
    proxy = server.create_proxy()
    
    # 添加请求头
    proxy.new_har("example.com", options={'captureHeaders': True, 'captureContent': True})
    proxy.add_header("Authorization", "Bearer your_token")
    
    # 配置浏览器使用代理
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument(f'--proxy-server={proxy.proxy}')
    driver = webdriver.Chrome(options=chrome_options)
    
    driver.get("https://example.com/dashboard")

3. 通过 JavaScript 注入 Token(适用于前端需要手动设置 Token 的场景)

如果 Token 是前端 JavaScript 代码设置的(例如通过 localStoragesessionStorage),你可以通过 Selenium 执行 JavaScript 注入 Token。

示例代码(Python):
复制代码
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com/dashboard")

# 使用 JavaScript 设置 Token
token = "your_token_here"
driver.execute_script(f"localStorage.setItem('token', '{token}');")

如果 Token 是通过 Cookie 传递的,你可以通过 Selenium 设置 Cookie。

示例代码(Python):
复制代码
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

# 添加 Cookie
token = "your_token_here"
driver.add_cookie({
    "name": "token",
    "value": token,
    "domain": "example.com",  # 替换为目标域名
    "path": "/"
})

# 刷新页面以应用 Cookie
driver.get("https://example.com/dashboard")

5. 通过 WebDriver 的 execute_cdp_cmd 方法设置 Token(适用于支持 CDP 协议的浏览器)

Chrome DevTools Protocol (CDP) 提供了更底层的接口,可以通过 execute_cdp_cmd 设置请求头。

示例代码(Python):
复制代码
from selenium import webdriver

options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)

# 使用 CDP 设置请求头
driver.execute_cdp_cmd("Network.enable", {})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {
    "headers": {
        "Authorization": "Bearer your_token"
    }
})

driver.get("https://example.com/dashboard")
相关推荐
软件测试大叔6 小时前
Playwright、Puppeteer、Selenium 自动化测试框架对比分析
测试工具
2501_924064117 小时前
2025年优测平台:接口最大并发量测试工具与实践方法
测试工具·性能优化·高并发系统·全链路压测·优测平台
2501_924064119 小时前
2025年接口最大并发量测试工具对比与最佳实践方案
测试工具·压力测试·性能指标
程序员汤圆21 小时前
软件测试面试题总结【含答案】
测试工具·单元测试·测试用例
syt_biancheng21 小时前
博客系统全流程测试总结
python·selenium·测试用例·压力测试·postman
测试-鹏哥1 天前
全新驾驶舱功能助力ITP测试平台腾飞
python·测试工具·压力测试
旋极智能1 天前
Perforce QAC 2025.3 新版上线 | 速度与深度双升级
测试工具·静态测试·qac·代码静态测试
测试19981 天前
一个只能通过压测发现Bug
自动化测试·软件测试·python·selenium·测试工具·bug·压力测试
卓码软件测评1 天前
第三方软件CMA/CNAS测评机构:【Apifox的自定义加密和签名的安全测试技巧】
测试工具·ci/cd·单元测试·测试用例·压力测试
测试人社区-小明1 天前
未来测试岗位的AI需求分析
人工智能·opencv·测试工具·算法·金融·机器人·需求分析