bbs论坛实现登录、进入每个模块、在每一个模块发帖,有二级页面的在二级页面发帖,随机在某个模块发帖。 jmeter新建一个线程组,添加cookie管理器,请求默认值,请求,察看结果树 添加好默认值(ip和路径) 添加请求(要先进入首页,然后登录,登录后进入首页) 首页直接用请求默认值就行,不用设置 登录请求需要在浏览器中F12抓包,找到接口和传参(登录成功后F12会自动跳转到下一页的接口,所以要设置持续记录所有接口) 把接口中抓出来的路径和请求参数粘贴到jmeter中 登录后首页也不用设置 执行一下可以看到,现在是登陆成功的 登陆成功然后我要进入这些版块,但是不能设置固定的,有几个设置几个,而是要让它自动,如果页面增加或者减少了版块,不需要对脚本改动也可以成功进入的。 想进入这些版块就先需要获取到对应的版块,这些都可以从首页获取,用正则提取器提取出来 看看这些版块的接口有什么规律 默认版块:http://127.0.0.1/testbbs/forum.php?mod=forumdisplay&fid=2 android开发:http://127.0.0.1/testbbs/forum.php?mod=forumdisplay&fid=46 iOS开发:http://127.0.0.1/testbbs/forum.php?mod=forumdisplay&fid=47 性能测试:http://127.0.0.1/testbbs/forum.php?mod=forumdisplay&fid=42 功能测试:http://127.0.0.1/testbbs/forum.php?mod=forumdisplay&fid=48 可以看到只有fid不同,其他都一样 那么只需要在首页中准确定位到fid,把这些fid都提取出来就可以了 正则表达式的边界要确定好,不然可能会不准确(定位边界没什么技巧,只能去试)
可以添加一个Debug Samper(调试取样器)来看我提取的内容是否取到了 可以看到我取到了,但是有点乱,不知道是不是只提取了一个 这时可以添加foreach控制器,从fids中把fid一个个取出来 在foreach下可以添加一个java请求来进行测试,让resultdata打印fid 这里可以看出fid确实打印出来了,但是我只有5个模块,却提取出了10个请求,说明正则提取的还是有问题 继续尝试 执行,这回可以看出打印了5个请求,5个请求的值都是不同的,说明这回我把5个模块的fid都准确的获取到了 在foreach下面添加请求 还是找到页面的接口,把fid改成可变的 然后执行看看,可以看到已经成功进入不同的模块 然后我想要在不同的模块中发帖 这又是另一个接口 继续抓包,post的是发帖的接口 路径和请求分别粘出来复制到请求中
这里需要传哈希值,所以需要提取哈希,直接在响应数据的位置找就可以 发帖时间可以用函数助手获取10位的时间戳 这里是设置好的参数,提取哈希,设置发帖时间,标题我用jia+当前发帖时间替代,发帖内容我随机生成了一串字符串 执行一下看看,可以看到我发贴是成功的 刷新一下浏览器,可以看到我在每个模块发帖都是成功的 如果想随机选择一个模块进行发帖,只发一条,只需要在提取fid的时候把匹配数字写成0就可以,0代表随机,然后把发帖的请求放在迭代器外面 提取fid时用的名称是fids,所以这里要用fids
执行看看,发表成功 如果当前模块有二级模块,那么在foreach里再添加一个foreach 执行可以看到子模块也是发帖成功的
|