Day16 高级玩法-拦截并获取网络请求
一、说明
有的时候登录的时候会获取验证码,有些情况下验证码是通过接口的上下请求rsa 加解密后可以获取,这个时候我们可以通过 的getResponseByUrlPattern 方法,抓取对应的请求,方法如下
/** * 拦截操作后的数据 * @param urlPattern URL 包含的字符串(非正则,内部用 contains 匹配) * @param method 触发动作方法名(如 click、enter、tab 等无参动作),作为 waitForResponse 的触发 Runnable; * 为 null 或空时表示动作已在步骤中执行,仅等待对应响应 * @return */ public String getResponseByUrlPattern( String urlPattern,String method) { Runnable runnable1 = () -> { if (method == null || method.isEmpty()) { return; } doAction(method); }; // 1. 定义你想要捕获的接口特征 (Predicate) // 比如:URL 包含 "community-search-pc" 且状态码是 200 Predicate<Response> searchResponsePredicate = response -> response.url().contains(urlPattern) && response.status() == 200; // 这里的页面点击会触发一个网络接口请求 return page.waitForResponse(searchResponsePredicate, runnable1).text(); }小工具,可以步骤定义中,点击新增,动作方法选择 getResponseByUrlPattern 选项。如下图
getResponseByUrlPattern使用说明
拦截并获取网络响应 | 参数:1~2个(用||分隔) | URL匹配模式:字符串, 触发动作(可选):无参动作方法名(如click/enter/tab,为空则仅等待响应)
二、例子
我们有这样一个场景
登录平台的时候,前端会向后端请求一个
http://localhost/dev-api/captchaImage
获取验证码的接口,为了方便测试,我把验证码的答案也放在返回里面了。返回结果如下:
{ "msg": "操作成功", "img": "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", "code": 200, "answer": "5",//这个是验证码的答案,后面会获取这个 "captchaEnabled": true, "uuid": "2e8da79528d34582a18d985c79dd6a7c" }图片如下:
我们现在如果登录,可以有如下步骤
①打开浏览器,输入测试平台地址
②刷新页面,获取/dev-api/captchaImage响应结果,存储到变量res
[执行操作方法成功]刷新页面,获取/dev-api/captchaImage响应结果,存储到变量res,操作方法:存储变量,操作参数:res存储变量名为:res,存储内容为:{"msg":"操作成功","img":"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","code":200,"answer":"72","captchaEnabled":true,"uuid":"6d835a38a6b845798245806cd95677d2"}③输入用户名
④输入密码
⑤解析json验证码answer的值,并且存储到code
⑥将获取的answer值,输入验证码输入框
⑦点击登录,登录成功
用例配置和步骤定义 如下
测试报告: