Replies: 2 comments 1 reply
-
有看了文章还不懂的,可以看这个实践视频 |
Beta Was this translation helpful? Give feedback.
0 replies
-
目前这个方法好像不大行了,是不是因为爱奇艺修改了策略 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Jmeter 简介
Jmeter是一个非常出名的,Java开发的跨平台压力测试工具,能够可视化的完成复杂的测试需求,今天我们用它在Windows10平台用GUI模式来完成比较复杂的操作。
下载
由于Jmeter基于JAVA,请用户自行下载JDK8以上的JDK以运行Jmeter。
安装完成后,在cmd中输入
java -version
验证JDK准备就绪后,下载Jmeter,https://jmeter.apache.org/download_jmeter.cgi
需求
现有网页 https://www.iqiyi.com/v_2ffkws0bgr0.html 和接口
https://pcw-api.iqiyi.com/albums/album/avlistinfo?aid={aid}&page=1&size=100
,需要通过一集获取到全集的信息简介并写入本地文件。开始使用
下载完毕后,解压
apache-jmeter-5.4.zip
并进入bin
目录,之后双击jmeter.bat
即可打开Jmeter。注意: 控制台(黑窗口)不要关闭
进入后,点击 Options - Choose Language - Chinese (Simplified)
创建项目
创建新项目,起个名字,然后
Ctrl+S
保存创建线程组
右键新建一个线程组
导入HTTP请求
随便打开爱奇艺一集,例如 https://www.iqiyi.com/v_2ffkws0bgr0.html ,按下
F12
,打开开发者工具并切换到Network
选项卡并刷新网页,在最上面的请求右键并复制cURL命令(Bash)随后在Jmeter中,点击 工具 - Import from cURL
将刚才的命令粘贴进去并点击创建即可
这样就在左侧多了一个HTTP Request节点
在线程组节点右键添加一个察看结果树,先测试能否正常获取到源代码。(记得随时Ctrl+S保存项目)
点击开始执行按钮
在查看结果树中可以看到能够正常获取网页内容
注:为了明确需求,我将上文中的HTTP Request修改为了获取网页源代码
正则表达式提取剧集ID
既然是处理请求后的内容,我们创建一个后置正则表达式提取器,用于在请求结束后提取响应内容
我们需要提取的是
albumId
,正则表达式为albumid.*"(\d+)
如图填写相应内容
其中:
$1$
意为提取正则表达式匹配结果的第一组的值(即括号里的内容)为了测试是否能正确匹配,添加一个调试取样器(添加 - 取样器 - 调试取样器)并执行一遍,在察看结果树中查看调试取样器响应
请求API接口
如法炮制,新建一个HTTP请求
注意: 在路径中使用了
${albumid}
来替换参数执行测试并在察看结果树看能否正常返回(切换为
JSON Path Tester
更方便查看)解析接口内容
先请求接口的节点添加一个JSON提取器备用
返回刚才的察看结果树,先测试一下我们的JSON表达式提取标题
data.epsodelist[*].shortTitle
,其中*
是获取全部数组结果。然后测试提取简介
data.epsodelist[*].description
两个表达式都没问题,返回JSON提取器,开始设置变量
其中:
;
隔开-1
代表匹配全部结果还是先测试一下子
到这里已经成功取到我们需要的信息,接下来就是保存为本地文件了。
写出文件
这里需要写一点点简单易懂的Java代码来保存文件咯
首先添加一个BeanShell后置处理器,修改名字
代码如下:
此处使用
vars.get("albumid")
相当于上文中${albumid}
最终文件
优化
为了方便控制,可以在最顶层添加变量供后续调用
将BeanShell代码第一行修改为
将获取网页源代码也对应修改为取变量的形式
完整JMX文件
点击展开
Beta Was this translation helpful? Give feedback.
All reactions