我是Jmeter的新手,所以我不知道是不是在问一个愚蠢的问题。我正在测试Web应用程序的性能,但在测试时我注意到页面上有多个请求。对于例如当用户访问页面www.xyz.com时,则存在静态内容,并且还有来自同一页面的另一个请求,该页面在网格中显示数据(www.xyz/getdata),还有js和css文件。我想知道是否有办法检索页面的所有请求。我已经尝试过http请求采样器,并且“从html文件中检索所有嵌入的资源”,但是当我在查看结果树中查看了所有请求时,它是显示34个请求,其中Chrome显示68个请求,因此我不确定这是正确的方法。
答案 0 :(得分:1)
我刚刚做到了。
您必须使用Jmeter + Webdriver Sampler + PhantomJS Config。这样:
1)下载并安装WebDriver Set个插件。插件安装记录在案here。
2)下载并将phantomjs executable放在磁盘上的某个位置。
3)创建一个测试计划,就像在Webdriver Two minute tutorial上显示的一样,但是用" bzm - PhantomJS Driver Config"替换FireFoxConfig。
4)在PhantomJS驱动程序配置中,打开PhantomJS选项卡并设置磁盘上phantomjs.exe的路径。
5)在WebDriver Sampler视图中,输入以下脚本:
var selenium = JavaImporter(org.openqa.selenium)
var fileUtils = JavaImporter(org.apache.qpid.util)
var io = JavaImporter(java.io)
var supportUi = JavaImporter(org.openqa.selenium.support.ui)
WDS.sampleResult.sampleStart()
// set the browser window dimension to fit your needs
var dimension = new selenium.Dimension (4080, 9000);
WDS.browser.size = dimension;
WDS.browser.manage().window().size = dimension;
// put your webpage bellow
WDS.browser.get('http://MYPAGE.com')
// take a screenshot of the page, save it to disk
var screenshot = WDS.browser.getScreenshotAs(selenium.OutputType.FILE)
fileUtils.FileUtils.copy(screenshot, new io.File('C:\\PATH\\TO\\screenshot.png'))
WDS.sampleResult.sampleEnd()
答案 1 :(得分:0)
你给我们的信息不多。但我想,你的网页使用AJAX调用来检索JS,图片等。 Jmeter无法获取这些文件,因为Jmeter不像Web浏览器那样执行HTML文件。
您可能会找到Jmeter的插件,或者您必须模拟您的AJAX调用,或者您必须更改您的工具。请从Xceptance XLT或phantomjs和衍生物或WPT查看XLT。
答案 2 :(得分:0)
首先,如果您正在尝试模拟实际负载,则需要“告诉”JMeter t o behave more like a real browser。它包括:
您还可以尝试通过JMeter HTTP Test Script记录器记录您的测试用例,捕获其他请求,将它们放在您的测试计划中,更好地在Transaction Controller下,以避免单独获取指标。
如果JMeter无法记录额外的请求,您需要通过任何嗅探器工具捕获它们,最简单的是HttpFox Firefox Addon,最强大的是Wireshark并手动构建丢失的请求。
一般情况下,如果您缺少的资源完全是外部的,那么加载测试它们并不是一个好主意。
答案 3 :(得分:0)
您可以使用Jmeter本身记录会话,并获得网页正在执行的所有检索: Apache JMeter HTTP(S) Test Script Recorder