You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Selenium发送带身份验证的POST、GET API请求

Selenium结合接口请求的DAM资源上传校验实现方案

首先准备依赖库:

  • Selenium:用于浏览器自动化操作,完成页面跳转、资源上传等UI层操作
  • requests:用于发送HTTP接口请求,完成查询、资源拉取操作
  • Pillow(可选):用于图片二进制内容校验

步骤1:Selenium启动浏览器完成资源上传操作

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 启动Chrome浏览器,可根据需求替换为Firefox、Edge等驱动
driver = webdriver.Chrome()
# 跳转至目标DAM系统上传页面
driver.get("替换为实际上传页面地址")

# 补充登录逻辑,按实际页面元素调整
# driver.find_element(By.ID, "username").send_keys("你的账号")
# driver.find_element(By.ID, "password").send_keys("你的密码")
# driver.find_element(By.ID, "submit_login").click()
# time.sleep(2)

# 定位文件上传控件,传入本地待上传文件的绝对路径
upload_input = driver.find_element(By.XPATH, '//input[@type="file"]')
upload_input.send_keys("替换为本地测试文件的绝对路径,如/Users/test/1.jpg")

# 等待上传完成,可根据页面上传成功提示、进度条状态调整等待逻辑
time.sleep(5)
# 可补充UI层上传成功校验
assert "上传成功" in driver.page_source

步骤2:发送带身份验证的POST查询请求

直接复用Selenium登录后的Cookie,不需要单独申请接口身份凭证:

import requests
import json

# 从Selenium中提取当前登录态Cookie,组装到请求头
cookies = driver.get_cookies()
cookie_header = "; ".join([f"{c['name']}={c['value']}" for c in cookies])
headers = {
    "Content-Type": "application/json",
    "Cookie": cookie_header
    # 如有其他身份校验头如Authorization,按实际接口要求补充
}

# 替换为实际资源查询接口地址
post_url = "替换为实际POST查询接口地址"
post_body = {
  "predicateParams": {
    "type":"dam:Asset",
    "p.offset": "0",
    "p.limit": "-1"
  },
  "dateParams": {
    "group.1_daterange.lowerBound":"2021-11-19T00:10:15",
    "group.1_daterange.upperBound":"2021-11-19T23:59:15"
  }
}

post_resp = requests.post(post_url, headers=headers, data=json.dumps(post_body))
post_result = post_resp.json()

步骤3:从POST响应提取预览URL

# 先校验查询接口返回正常
assert post_result["status"]["success"] == True
assert post_result["totalAssetsModifiedOrCreated"] >= 1
# 提取对应资源的预览链接,可根据上传文件名匹配对应命中资源
preview_url = post_result["hits"][0]["previewLink"]

步骤4:发送GET请求获取预览资源

# 按要求组装GET请求参数,如预览链接为静态资源地址无需传参可省略params字段
get_params = {
  "predicateParams": {
    "type":"dam:Asset",
    "p.offset": "0",
    "p.limit": "-1"
  },
  "dateParams": {
    "group.1_daterange.lowerBound":"2021-11-17T00:10:15",
    "group.1_daterange.upperBound":"2021-11-18T23:50:15"
  }
}
# 拉取二进制资源添加stream=True参数
get_resp = requests.get(preview_url, headers=headers, params=get_params, stream=True)
assert get_resp.status_code == 200

步骤5:校验资源正确性

可根据测试需求选择校验方式:

from PIL import Image
import io

# 方式1:校验图片内容和本地原图一致
local_img = Image.open("替换为本地测试文件绝对路径")
resp_img = Image.open(io.BytesIO(get_resp.content))
# 校验尺寸、像素完全匹配
assert local_img.size == resp_img.size
assert list(local_img.getdata()) == list(resp_img.getdata())

# 方式2:如返回为元数据JSON,直接校验字段
# get_result = get_resp.json()
# assert get_result["path"] == "预期资源路径"

# 测试完成关闭浏览器
driver.quit()

内容的提问来源于stack exchange,提问作者Nagaraju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:15:04