我们使用eclipse在windows 7上使用junit+java开发了selenium webdriver脚本。所有脚本都按预期工作,现在我们使用该脚本使用Jmeter进行负载测试。然而,当运行脚本系统打开多个浏览器(200)基于用户线程,它创建系统挂起,有没有办法处理这个问题,或者我们可以运行脚本不打开浏览器。我遇到过xvfb工具,但无法获得该工具的java api插件在eclipse中。
我们也尝试过使用HtmlUnitDriver,但由于它不支持javascript,因此测试失败,我们也尝试过HtmlUnit,发现同样的事情。
注意:我们已经编写了webdriver脚本来维护元素(autocomplete, image)在屏幕上的显示项。
如果有人能帮助或提供更多的输入,那将是伟大的…
首先,不要将selenium脚本与JMeter集成以进行负载测试!由于你在帖子中提到的明显后果,这不是一个好的方法。当我刚开始接触JMeter和selenium时,我采用了类似的方法,但在运行负载测试时,产生了太多的浏览器实例,导致操作系统崩溃,这给我带来了很大的痛苦。
你可以使用HtmlUnitDriver或任何带有JMeter的无头浏览器测试工具,但它们仍然会在内存中内部运行浏览器。此外,如果你的应用程序大量使用Javascript,它将没有帮助。
所以我建议你用JMeter代理记录一个浏览会话,并根据你的需要修改脚本(请求集),并单独播放这些请求,带有线程数。
从更高的层次来看,您应该这样做:
- 添加一个JMeter测试计划,监听器,线程组和设置JMeter代理,并记录一个浏览会话,你在自动完成文本框中输入一些东西,你得到一定的结果。
-
停止代理,查看线程组下的所有请求
-
据我所知,当涉及到自动完成插件,多个每次在文本框中输入字母时,请求都会被发送。为例如,对于单词'
stackoverflow
':Request1: q=s
Request2: q=st
Request3: q=sta
等等这里可以通过包含all单词有相同的长度,这反过来会让你有相同的发送到服务器的请求数
-
因此,在您的测试计划中,您将每个Jmeter线程传递一个单词。你可以通过使用jmeter从CSV文件传递单词到请求吗参数化。
这将是一种内存效率更高的负载测试方式,而不是在JMeter中使用selenium。我也问过类似的问题。您可以查看回复。