【发布时间】:2015-05-21 11:57:46
【问题描述】:
我正在使用 JMeter (2.13 r1665067) 在登录和注册时使用 Google Kaptcha 测试网站,直到可以在测试环境中禁用它们。我已经录制了一个会话并设置了一个保存响应到文件采样器以提取 kaptcha 图像。然后我有一个 Beanshell 采样器显示它,以便我可以根据需要输入代码 (thanks to this post)。
我现在遇到的问题是从服务器检索到的第一张图片重复显示。我尝试将 Beanshell 中创建的任何对象设置为使用后为空,并检查“每次调用前重置 bsh.Interpreter”。
我能够通过使用 $__(Random) 函数来解决问题,当在将响应保存到文件采样器中创建时,将唯一的 id 附加到每个图像,但会导致创建大量文件。我可以验证文件系统上保存的图像文件是否正在更改。我也可以重新启动 JMeter,或者从文件系统中清除文件以使其正确显示,但只是第一次。通过保存响应向文件采样器添加时间戳不够独特,但无论如何都会创建其他文件。
我想知道为什么 JMeter 似乎在缓存图像,以及是否有办法每次写入和读取单个文件,避免我通过附加唯一 ID 获得的大量文件。我想这与我的配置有关。
Beanshell 采样器代码:
filenameOrURL = new URL("file://${FILE2}");
image = Toolkit.getDefaultToolkit().getImage(filenameOrURL);
icon = new javax.swing.ImageIcon(image);
pane = new JOptionPane("Enter Captcha", 0, 0, null);
String captcha = (String)pane.showInputDialog(null, "Captcha", "Captcha", 0, icon, null,null);
filenameOrURL = image = pane = icon = null;
log.info(captcha);
vars.putObject("captcha",captcha);
将响应保存到文件采样器参数:
Filename prefix: /response/response_
Variable name: FILE
线程组:
如果我的名声在我之前,我会发布一张图片。 :脸红:
Recording Controller
login.html (GET)
Save Responses to a file
BeanShell Sampler
login.html (POST)
logout.html (GET)
【问题讨论】:
-
顺便说一句,您可以尝试在完成验证码后删除 beanshell 后处理器中保存的响应文件,以免在测试结束时保留大量文件。
-
@RaGe 谢谢,我确实考虑过这一点,但我想了解我正在经历的“缓存”,而不是仅仅解决我的无知。