0

이것은 Gatling 레코더 스크립트입니다.상관 관계를 사용하여 Gatling에서 티켓을받는 방법

val httpProtocol = http 
    // LaunchURL 
    .baseURL("https://mywebsite/instance") 
    .acceptHeader("*/*") 
    .acceptEncodingHeader("gzip, deflate") 
    .acceptLanguageHeader("en-US,en;q=0.5") 
    .connection("keep-alive") 
    .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:26.0) Gecko/20100101 Firefox/26.0") 

    // Login 
    .exec(http("request_6") 
    .post("""/cas/login;jsessionid=cN7KK9FvXzsqWjmLxL2M5xjk.undefined?service=https://mywebsite/instance/index.jsp""") 
    .headers(headers_6) 
    .param("""username""", """abc""") 
    .param("""password""", """abcpwd""") 
    .param("""lt""", """LT-828-wppjtrEoGU6gj9UVFt3soVqQ3mLMwe""") 
    .param("""execution""", """e1s1""") 
    .param("""_eventId""", """submit""") 
    .param("""submit""", """LOGIN""")) 
    .pause(10) 

우리는이 세 줄이 표시되는 경우 :

.param("""username""", """abc""") 
.param("""password""", """abcpwd""") 
.param("""lt""", """LT-828-wppjtrEoGU6gj9UVFt3soVqQ3mLMwe""") 

우리는 사용자 이름과 암호를 매개 변수화를 사용합니다. 이 값은 테스트를 실행하는 동안 csv 파일에서 얻을 수있는 입력 값입니다. 여기서 "lt"는 티켓의 매개 변수입니다. 우리가 URL을 시작할 때 CAS에 의해 생성되었습니다.

다음 코드는 BaseURL 응답의 일부입니다.

<table width="100%"> 
    <tr> 
    <td> 
     <label for="username" class="fl-label"><span class="accesskey">U</span>sername:</label> 
     <input id="username" name="username" class="required" tabindex="1" accesskey="u" type="text" value="" size="25" autocomplete="false"/> 
    </td> 
    </tr> 
    <tr> 
    <td>       
     <label for="password" class="fl-label"><span class="accesskey">P</span>assword:</label> 
     <input id="password" name="password" class="required" tabindex="2" accesskey="p" type="password" value="" size="25" autocomplete="off"/> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     <input id="warn" name="warn" value="true" tabindex="3" accesskey="w" type="checkbox" /> 
     <label for="warn"><span class="accesskey">W</span>arn me before logging me into other sites.</label> 
     <input type="hidden" name="lt" value="LT-828-wppjtrEoGU6gj9UVFt3soVqQ3mLMwe" /> 
     <input type="hidden" name="execution" value="e1s1" /> 
     <input type="hidden" name="_eventId" value="submit" /> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     <input class="btn-submit" name="submit" accesskey="l" value="LOGIN" tabindex="4" type="submit" /> 
     <input class="btn-reset" name="reset" accesskey="c" value="CLEAR" tabindex="4" type="reset" />   
    </td> 
    </tr> 
</table> 

여기 CAS는 BaseURL Response에 "LT-828-wppjtrEoGU6gj9UVFt3soVqQ3mLMwe" 티켓을 생성합니다. 여기서는 BaseURL 응답에서 티켓을 추출하여이 티켓을 로그인 요청에 사용해야합니다.

Previous Jmeter의 정규식을 사용하여 티켓을 BaseURL Response에서 name="lt" value="(.*?)"으로 추출했습니다.

개틀링에서 티켓을 추출하는 방법을 알려주세요.

및 뷰 상태를 서로 연관시키는 방법을 알려주십시오.

감사 & 감사

Narasimha 모든

답변

3

첫째, 당신은 같은 서비스에 제 1 GET 요청을해야합니다

http("getLogin") 
    .get(casUrl) 

casUrl 발은 경로를 포함 고려 귀하의 실제 서비스는 그 다음에 만 필요한 정보를 검색 할 수 있습니다. 예를 들어 CSS 표현식을 사용하면

http("getLogin") 
    .get(casUrl) 
    .check(css("input[name='lt']", "value").saveAs("lt")) 

체커는 요청 본문에서 데이터를 추출하는 데 사용됩니다. saveAs은 중요한 부분입니다. 그것은 당신이 gatling의 세션에 데이터를 기록 할 수 있습니다.

당신은 이런 식으로 재사용 할 수 있습니다 :

http("postLogin") 
    .post(...) 
    ... 
    .param("lt", "${lt}") 

브래킷은 또한 필수 사항은 키 lt와 관련된 값을 시도하고 세션에서 검색 개틀링을 통지.

val casUrl = "/cas/login;jsessionid=cN7KK9FvXzsqWjmLxL2M5xjk.undefined?service=https://mywebsite/instance/index.jsp" 

val httpProtocol = http 
    // LaunchURL 
    .baseURL("https://mywebsite/instance") 
    .acceptHeader("*/*") 
    .acceptEncodingHeader("gzip, deflate") 
    .acceptLanguageHeader("en-US,en;q=0.5") 
    .connection("keep-alive") 
    .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:26.0) Gecko/20100101 Firefox/26.0") 

    // Login 
    .exec(
    http("getLogin") 
     .get(casUrl) 
     .check(css("input[name='lt']", "value").saveAs("lt"))) 
    .exec(
    http("postLogin") 
     .post(casUrl) 
     .headers(headers_6) 
     .param("username", "abc") 
     .param("password", "abcpwd") 
     .param("lt", "${lt}") 
     .param("execution", "e1s1") 
     .param("_eventId", "submit") 
     .param("submit", "LOGIN")) 

내가이 사용 사례에 필요하지 않은 트리플 따옴표를 제거하는 자유를했다 :

는 여기에 귀하의 스크립트를 기반으로 전체 예이다.

+0

감사합니다. 나는 너에게 알려주려고한다. – user2571340

+0

안녕하세요 notdrft, 나는 또한 viewstates 상관 관계가 필요합니다. 제발 말해 줄래? – user2571340

+0

그게 뭔지 모르겠다. 시간이 좀 걸리고 wiki를 읽어야한다 : https://github.com/excilys/gatling/wiki/Checks. 나중에 어떤 식 으로든 당신을 도울 수있어서 기쁩니다. – notdryft

관련 문제