请求:
我发送“get”http请求,没有参数;
路径:http://192.168.22.139:8080/KSP
回复:
<input id="username" type="text" name="username" required/>
<input id="password" type="password" name="password" required/>
<input type="hidden" name="lt" value="LT-697-vbNmm6NKOZ0cd7Wg1ywzbMKLa0DnOc" />
<input type="hidden" name="execution" value="e1s1" />
<input type="hidden" name="_eventId" value="submit" />
我添加了两个XPath Extractor来获取lt
和execution
:
lt
; //*[@id="login"]/input[3]
execution
; //*[@id="login"]/input[4]
然后我使用username/password/service/It/execution/_eventId
发送另一个请求:
错误:我得到的票证和执行是空的,我通过chrome获取xpath,那么问题是什么?
答案 0 :(得分:5)
从第一个回复中,可以使用正则表达式提取器来提取ticke和lt。
然后使用参数:
发送第二个请求
username/password/It/execution/_eventId/_eventId
顺便说一句,你应该添加 HTTP Cookie管理器,
答案 1 :(得分:3)
我没有看到第一个请求的参数。至少我没有看到 lt 。
第二个请求应该是GET请求,参数为:服务和票证(这不是jsessionid,值由CAS生成,它是与CAS登录的第一个请求中的参数 lt 相同)。
答案 2 :(得分:3)
在第二个请求中需要更改一些内容:
添加execution
参数(从第一个请求中提取,例如XPath Extractor
或Regular Expression Extractor
),
.//*[@id='fm1']//*[@name='execution']/@value
添加_eventId=submit
参数,
{@ 1}}参数(登录票证)也应该从登录表单中提取 - 它每次都会改变;请参阅lt
或XPath Extractor
,
Regular Expression Extractor
,答案 3 :(得分:2)
如果您正在测试CAS登录本身,我可以建议使用JMeter HTTP Proxy server来记录登录过程,捕获所有正在传递的值,检测那些是动态的,并通过正则表达式提取器处理它们,XPath, Beanshell等后处理器 - 您最满意的。
如果您的应用程序位于CAS后面,我猜CAS登录只是添加了一个cookie,您的应用程序会根据它来考虑用户身份验证。在这种情况下,您只需将Cookie存储在CSV文件中,然后通过HTTP Cookie Manager使用它们来模拟经过身份验证的用户。