【问题标题】:How to test CAS with jmeter?如何用jmeter测试CAS?
【发布时间】:2013-11-18 02:40:11
【问题描述】:
  • 请求:

    我发送一个“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 来获取 ltexecution

  • 参考名称:lt;
    xPath 查询://*[@id="login"]/input[3]
  • 参考名称:execution;
    xPath 查询://*[@id="login"]/input[4]

然后我用username/password/service/It/execution/_eventId发送另一个请求:

错误:我得到的票证和执行是空的,我通过chrome得到xpath,有什么问题?

【问题讨论】:

  • “CSS/JQuery Extractor”也可以得到“lt”。 “输入[名称=lt]”
  • “CSS/JQuery Extractor”也可以得到“lt”。 “输入[名称=lt]”

标签: xpath single-sign-on jmeter cas


【解决方案1】:

从第一个响应中,可以使用Regular Expression Extractor来提取tick和lt。

然后发送第二个带参数的请求:

username/password/It/execution/_eventId/_eventId

顺便说一下,你应该添加HTTP Cookie Manager

【讨论】:

    【解决方案2】:

    我没有看到您的first请求的参数。至少我没有看到lt

    第二个请求应该是GET请求,参数分别是:serviceticket(这个不是jsessionid,值是CAS生成的,是与第一个 CAS 登录请求中的参数 lt 相同)。

    【讨论】:

    • 我重新编辑了我的问题;在我的第一个请求中,我怎样才能得到“它”?从响应 1 中,我得到了票。在第一个请求中,我需要发送什么参数,第二个请求呢?
    • @OliviaWang ,当你打开CAS登录页面时,应该有一个名为“lt”的隐藏输入,你可以使用Regular Expression Extractor获得。
    • 你的建议是对的,我已经重新编辑了我的问题。现在的问题是我无法获得“lt”和“execution”,请帮助我。
    • 也许你可以试试 Regular Expression Extractor 和正则表达式:lt=(.+)
    • 我对你的答案投了赞成票,但问题仍然存在关于“XPath Extractor”的问题,所以很抱歉......
    【解决方案3】:

    您需要在第二个请求中更改一些内容:

    • 添加execution参数(从第一个请求中提取,例如XPath ExtractorRegular Expression Extractor),

      • XPath 表达式类似于.//*[@id='fm1']//*[@name='execution']/@value
    • 添加_eventId=submit参数,

    • lt 参数(登录票)也应该从登录表单中提取 - 它每次都会更改;见XPath ExtractorRegular Expression Extractor

      • XPath 表达式:.//*[@id='fm1']//*[@name='lt']/@value,
    • 不需要,但看起来会更好 - 将 GET 更改为 POST。

    【讨论】:

    • 你的建议是对的,我已经重新编辑了我的问题。现在的问题是我无法获得“lt”和“execution”,请帮助我。
    • 仍然无法获得“lt”和“execution”,我使用“Regular Expression Extractor”代替,效果很好。还是谢谢大家。
    【解决方案4】:

    如果您正在测试 CAS 登录本身,我可以建议使用 JMeter HTTP Proxy server 记录登录过程,捕获所有正在传递的值,检测那些是动态的并通过正则表达式提取器、XPath、Beanshell 处理它们,等后处理器 - 你最舒服的。

    如果您的应用程序落后于 CAS,我猜想 CAS 登录只是添加了一个 cookie,您的应用程序会根据它考虑用户身份验证。在这种情况下,您可以简单地将 cookie 存储在 CSV 文件中的某个位置,并通过 HTTP Cookie Manager 使用它们来模拟经过身份验证的用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2014-08-09
      • 2011-08-13
      • 2010-11-07
      相关资源
      最近更新 更多