概述
webuiLevel1 框架内置了基于 OkHttp 的 HTTP 请求能力,可以在测试执行链路中发送 RESTful 请求、提取 JSON 字段、将响应存入变量,并在后续步骤中引用------完美支持登录换取 Token → 带 Token 访问这类链式调用场景。
一、前置步骤
双击工具
,加载day17_step.xlsx

二、本次新增

点击curl转换

点击发送后效果图

三、步骤sendRequest 动作方法
格式:`动作值 = 方法||URL||请求体||请求头||返回类型`
其中返回类型是最后一个不含 `:` 的参数,从 varargs 末尾自动识别:
|--------------|----------|---------------------------------------------|-------|---------|
| --- | --- | --- | | |
| `body`(默认) | 响应体 | `{"origin":"1.2.3.4"}` | | |
| `headers` | 响应头 | `Content-Type: application/json\r\n...` | | |
| `status` | HTTP 状态码 | `200` | | |
| `all` | 三合一 | `200 | 响应头内容 | 响应体内容` |
四、基础示例
① GET 请求入门
动作方法:sendRequest
动作值 :GET||https://jsonplaceholder.typicode.com/posts/1\|\|Content-Type:application/json\|\|body
特殊方法:存储变量
特殊值 :post

日志输出:
========================================
请求 GET https://jsonplaceholder.typicode.com/posts/1
请求头 Content-Type: application/json
响应 200 OK
响应头 Content-Type: application/json; charset=utf-8
响应体 {"userId":1,"id":1,"title":"sunt aut facere...","body":"quia et..."}

② POST 提交 JSON

返回示例:
{"title":"webui-test","body":"hello","userId":1,"id":101}

③ 获取响应头 / 状态码 / 全部
只要响应头
GET||https://jsonplaceholder.typicode.com/users/1\|\|Content-Type:application/json\|\|headers
只要状态码
GET||https://jsonplaceholder.typicode.com/todos/1\|\|\|\|status
三合一(状态码||响应头||响应体)
GET||https://jsonplaceholder.typicode.com/comments/1\|\|Content-Type:application/json\|\|all


五、JSON 提取:getValueByJsonPath
配合"存储变量",可以用 JsonPath 从响应中精确提取字段:
动作方法:getValueByJsonPath
动作值 :@loginResult||$.accessToken
特殊方法:存储变量
特殊值 :token
支持的 JsonPath 语法:`.field\`、\`.data0.name`、`$.items\*.id` 等标准表达式。
六、链式调用实战:登录 → 提取 Token → 访问受保护接口
以 `dummyjson.com` 为例,完整流程仅需 4 步:
Step 1 --- 登录获取 Token
动作方法:sendRequest
动作值 :POST||https://dummyjson.com/auth/login\|\|
{"username":"emilys","password":"emilyspass"}||
Content-Type:application/json||body
特殊值 :loginResult

返回示例:
{"id":1,"username":"emilys","accessToken":"eyJhbG...","refreshToken":"eyJhbG..."}

Step 2 --- 提取 accessToken
动作方法:getValueByJsonPath
动作值 :@loginResult||$.accessToken
特殊值 :token

Step 3 --- 带 Token 请求
动作方法:sendRequest
动作值 :GET||https://dummyjson.com/auth/me\|\|
Content-Type:application/json||
Authorization:Bearer ${token}||body
特殊值 :userInfo
注意:`{token}\` 会被框架自动替换为实际值。\`@变量名\` 适合独立字段(整段以 \`@\` 开头),\`{变量名}` 适合嵌入在字符串中间。

Step 4 --- 提取用户名
动作方法:getValueByJsonPath
动作值 :@userInfo||$.firstName
特殊值 :firstName

七、完整测试步骤
baday17 共 15 个步骤,覆盖全部 sendRequest 返回类型 + 链式调用:
b
|---------|---------------|--------------------|------------------|----|----------------------------------------|----|-----------------------------|---------------------------------|-----------|----------|
| --- | --- | --- | --- | | | | | | | |
| 1 | 基础GET请求 | sendRequest | `GET\ | \ | jsonplaceholder.typicode.com/posts/1\ | \ | ...\ | \ | body` | |
| 2 | 提取post标题 | getValueByJsonPath | `@post\ | \ | .title\` | | | | | |
| 3 | POST提交JSON | sendRequest | \`POST\\ | \\ | .../posts\\ | \\ | {"title":"webui-test"}...\` | | | |
| 4 | 提取新建id | getValueByJsonPath | \`@postResult\\ | \\ | .id` | | | | | |
| 5 | 获取响应头 | sendRequest | `GET\ | \ | .../users/1\ | \ | ...\ | \ | headers` | |
| 6 | 获取状态码 | sendRequest | `GET\ | \ | .../todos/1\ | \ | \ | \ | \ | status` |
| 7 | 三合一返回 | sendRequest | `GET\ | \ | .../comments/1\ | \ | ...\ | \ | all` | |
| 8 | 登录获取Token | sendRequest | `POST\ | \ | dummyjson.com/auth/login\ | \ | ...` | | | |
| 9 | 提取accessToken | getValueByJsonPath | `@loginResult\ | \ | .accessToken\` | | | | | |
| 10 | 带Token获取用户信息 | sendRequest | \`GET\\ | \\ | .../auth/me\\ | \\ | \\ | Authorization:Bearer {token}` | | |
| 11 | 提取firstName | getValueByJsonPath | `@userInfo\ | \ | .firstName\` | | | | | |
| 12 | 提取lastName | getValueByJsonPath | \`@userInfo\\ | \\ | .lastName` | | | | | |
| 13 | 获取产品信息 | sendRequest | `GET\ | \ | dummyjson.com/products/1\ | \ | ...\ | \ | body` | |
| 14 | 提取title | getValueByJsonPath | `@product\ | \ | .title\` | | | | | |
| 15 | 提取price | getValueByJsonPath | \`@product\\ | \\ | .price` | | | | | |
八、请求头语法
jiu请求头支持 3 种写法,可以混用:
单个头
Content-Type:application/json
多个头用 || 分隔
Content-Type:application/json||Authorization:Bearer token
引用变量,嵌入在字符串中间用 ${变量名}
Content-Type:application/json||Authorization:Bearer ${token}
九、关键注意事项
-
`||` 分隔符不能被转义 ------ 如果 URL/body 中需要 `||`,无法传递。URL 中用 query string 代替,body 中用其他字符
-
`@变量` 引用 ------ 仅当参数片段以 `@` 开头时替换,如 `@token`(独立使用)
-
`{变量}\` 引用 ------ 支持嵌入在字符串中间,如 \`Authorization:Bearer {token}`,优先用于拼接场景
-
返回类型识别规则 ------ 末尾参数若不含 `:` 且等于 `body/headers/status/all` 之一,识别为返回类型;否则视为请求头
-
all 返回的三合一中响应头部分的 `||` 会被替换为 `\|\|`,避免与分隔符混淆
-
超时配置 ------ 连接超时 30s,读写超时 60s
十、总结
sendRequest + 存储变量 + getValueByJsonPath 的组合,让框架从纯浏览器自动化扩展为支持 API 测试的混合引擎。15 个步骤跑下来,你可以完成:
-
GET / POST 基础请求发送
-
JSON 字段提取与存储
-
响应头 / 响应码获取
-
登录 → Token → 授权接口的链式调用
-
多个请求结果的交叉引用
测试步骤 Excel 文件位于 `day17_http请求/day17_step.xlsx`,可直接加载执行。