问答 jmeter 开启录制后 无法上传附件

请叫我叼毛 · May 25, 2022 · Last by S.chen replied at July 09, 2022 · 8269 hits

在 jmeter 中开启了 HTTP 代理服务器,并开启本地的 localhost 代理,对 web 的接口进行录制,但是到了上传附件的接口 页面中上传附件时无效的 请教怎么解决

最佳回复


给你截了个图 文件位置就是就是你上传图片上传不了的原因

实际上你的上传操作已经录制到了,只是依赖上传的后续操作操作不了

关掉代理上传完文件再录制后续操作也是一样的 不影响结果,反正文件路径都要自己去改的

共收到 17 条回复 时间 点赞

无效具体是怎么无效?麻烦提供更详细的信息吧。

如果你的代理录制已经保存了 , 就把要上传的文件 放在代理录制脚本保存的目录
如果没有保存录制脚本, 就把要上传的文件 放在 Jmeter 的 bin 目录下再进行录制上传即可

Tester_谜城 回复

我尝试过把附件放在 bin 目录下 但是结果还是不行

陈恒捷 回复

附件上传不上去 就是点击上传 选择附件确定后不会出现在上传附件的列表中

这个只是一个表象。需要进一步排查下:

1、作为处理逻辑起点的浏览器,开发者选项-network 里显示是否有发出上传请求?有的话请求结果是什么?
2、作为处理逻辑中间点的 http 代理,Jmeter 录制代理里这个上传附件的请求数据有录制到么?从录制信息看是否有什么异常?
3、作为处理逻辑终点的服务端,有收到上传的附件吗?(可以看下有没有日志打印,有的话通过日志查看是比较方便的)

需要有这些信息,才能进一步排查定位问题,进而找到解决方案。

放在 bin 目录是你的录制脚本没有保存的情况
如果你的录制脚本保存了,就应该放在录制脚本所在目录(录制脚本不是录制完成的脚本,是你用来录制,有代理服务器的那个脚本)
不然就加一个擦看结果树到代理服务器下面,录制的时候看看请求报错给的文件位置在哪 再把上传的文件放在指定位置

这是 Jmeter 代理录制读取文件的机制导致的, 如果没有保存当前代理录制计划, 就会去 bin 目录中找上传文件
如果已经保存了,则会在代理录制计划保存目录去找上传的文件

Tester_谜城 回复

看这哥们在 4 楼回复的意思,不是录制后运行录制出来的脚本报错,而是录制过程中 web 页面操作时,由于多了个 jmeter 代理上传功能不正常。

陈恒捷 回复

就是录制的时候, 因为录制的文件路径不对, 就会导致录制不上上传的操作,文件都找不到,肯定没有文件上传成功的,我经常用录制, 之前也遇到过这个问题,排查录制脚本的返回数据才找到的解决方案

陈恒捷 回复

对对对 是的 是录制过程中 在 web 端不开录制代理是 OK 的 但是如果我启动 jmeter 录制代理不是要开启本地代理么 就无法上传文件了

Tester_谜城 回复

好的 我再排查下

陈恒捷 回复

现在 jmeter 的服务器性能监视器跑不起来了 O(∩_∩) O 哈哈~

陈恒捷 回复

我尝试了把图片放在 bin 下 .jmx 所在目录下,均不行。以下是结果:

1、作为处理逻辑起点的浏览器,开发者选项-network 里显示是否有发出上传请求?有的话请求结果是什么?

#### 答:开发者工具→网络→预览 / 响应:无法加载响应数据:No data found for resource with given identifier 。负载处显示的信息如下:
ext: 001b
token: 4764f43be2df4d49be85ef93a6137dca
Filedata: (二进制)
看了下源
------WebKitFormBoundary2Iq4TK3mOaxc2hf9
Content-Disposition: form-data; name="Filedata"; filename="峨眉怎.png"
Content-Type: image/png

------WebKitFormBoundary2Iq4TK3mOaxc2hf9--
项目里面的结果是前台给出了网络错误的提示信息。

2、作为处理逻辑中间点的 http 代理,Jmeter 录制代理里这个上传附件的请求数据有录制到么?从录制信息看是否有什么异常?

1)jmeter 录制到了这个请求,但是我发现在在这个 http 请求控件的文件上传页签下文件名称:是乱码(请问这个怎么解决,我已经将 jmeter 的配置文件改成了 UTF-8 的解码)。我换成了 111.png 再次执行 显示正确。但是不影响结果。

2)我看了下 jmeter 这个请求的个参数与开发者工具的是相匹配的文件名称:111.png 参数名称:Filedata MIME 类型:image/png

3)存在疑问:文件上传页签下是没有本地路径的,那 jmeter 是从我保存的.jmx 文件所在的路径遍历,还是 jmeter 的 bin 目录下遍历呢?

4)那么我是否可以增加一个 CSV……的配置元件来将这个文件作为变量传到录制的请求的文件上传页签的文件名称处呢?

3、作为处理逻辑终点的服务端,有收到上传的附件吗?(可以看下有没有日志打印,有的话通过日志查看是比较方便的)
### 1)如果我在 inetcpl.cpl 中开启了代理,项目中上传附件就会显示网络错误,也就是服务器并为收到附件。如果关闭了 inetcpl.cpl 的代理那么就能成功上传,当然此时 jmeter 不会录制到这个请求。

2)jmeter 的日志里我能觉得可疑的就是 Problem with SSL certificate for url for 'testerhome.com'? Ensure browser is set to accept the JMeter proxy cert: Received fatal alert: certificate_unknown 这个,大致意思就是需要确保浏览器接受 jmeter 的证书,但是呢关键字符串是 testerhome.com 所以应该和项目无关 而且我也尝试过在浏览器中增加证书。

需要有这些信息,才能进一步排查定位问题,进而找到解决方案。

Tester_谜城 回复

感觉这个是不是录到了请求信息就行 附件上传的 需要人为干预?


给你截了个图 文件位置就是就是你上传图片上传不了的原因

实际上你的上传操作已经录制到了,只是依赖上传的后续操作操作不了

关掉代理上传完文件再录制后续操作也是一样的 不影响结果,反正文件路径都要自己去改的

Tester_谜城 回复

嗯 谢谢 是这样子的 你的解释很清晰 上传操作的请求 jmeter 已经录制到了 ,包括附件信息。只不过因为开了代理 导致附件无法传送到服务器。其实这个时候可以关闭浏览器的代理先让附件传送到服务器 然后再开启代理接着录制 录制完成后 删除不需要的请求 然后跑一遍 如果上传附件这里跑不通的话再人为干预调整么。而且附件也只是 add 接口需要的参数,如果不对附件上传的接口单独做压测 这个请求都用不上。

Tester_谜城 回复

再次表示感谢,辛苦了!!!

打卡,学习了!

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up