2014-04-07 3 views
0

JMeter에서 Javascript로 쓰레드 변수를 저장하고 다음 단계 또는 다음 쓰레드 그룹에서 Beanshell을 참조 할 수 있습니까?JMeter에서 스레드 변수를 Javascript에 저장하고 Beanshell에서 참조하려면 어떻게합니까?

WebDriver 샘플러 플러그인을 사용 중이며 WebDriver 단계가 Javascript 명령이어야하는 것 같습니다. Javascript에서 WebDriver 코드 블록을 작성하여 웹 사이트로 이동하여 쿠키 값을 얻습니다.

  1. 자바 스크립트 WebDriver 단계 끝에서 스레드 그룹 변수를 어떻게 설정합니까?
  2. 어떻게하면이 값을 Beanshell 단계에서 검색 할 수 있습니까?

나는 여러 가지 일을 시도했지만 아무 것도 작동하지 않습니다. 예를 들어 vars.put은 WebDriver 샘플러에서 작동하지만 props.put은 'props'가 정의되어 있지 않음을 나타냅니다. 디버그 샘플러 내 JMeter를 속성을 다음과 같이 남았습니다 설정되어 있음을 보여줍니다

"varName"= varName 

과 같이 자바 스크립트를 설정 한 후 :

props.put('varName', varName) 

그리고 잘 전혀 보이지 않는다.

답변

0

까다로운 점은 WebDriver Sampler에서도 vars에 액세스 할 수 없다는 것입니다. 더 창의적이어야합니다. 참조 이름으로

My var value is: (.+?) 

varName : 결국

WDS.sampleResult.setResponseData("My var value is:" + varName); 

당신이 즉 Regular Expression Extractor이 같은 정규 표현식을 사용하여 응답에서이 문제를 추출해야 다음과 같이 우선 당신은 샘플러의 결과 값을 반환해야

그리고 마지막으로 같은 코드를 사용하여 WebDriver 샘플러에 Beanshell Post Processor을 추가

props.put("varName", vars.get("varName")); 

JMeter 변수를 "전역"범위를 가지며 다른 스레드 그룹에서 재사용 할 수있는 JMeter 속성으로 변환 할 수 있습니다.


내가 궁극적으로 발견 한 해결책은 동일하지 않았습니다. 'WDS.sampleResult.setResponseData'사용은 WebDriver 샘플러 코드가 이것을 허용하지 않는 것 같기 때문에 작동하지 않습니다.

"머리글"을 사용하여 해결 방법을 찾았습니다. WebDriver Sampler 직후에 Beanshell Sampler 단계를 사용하면 이전 결과의 헤더를 수정할 수 있습니다 (응답 데이터 자체를 수정할 수는 없지만). WebDriver Sampler에서 'WDS'를 사용하여 헤더를 저장할 수 있습니다. sampleResult.setResponseHeaders ("iCookie :"+ iCookie) '입니다. 그런 다음 후속 Beanshell 샘플러 (포스트 프로세서가 아님)에서 'String header = ctx.getPreviousResult(). getResponseHeaders();'를 사용하여 그 값을 얻을 수 있습니다. 내가이 형식으로 헤더를 저장하는 한 : WebDriver Sampler의 "HeaderName : HeaderValue".

.setResponseData 메서드를 사용하여 비슷한 작업을 수행 할 수 없다는 것은 정말 귀찮은 일입니다. 그러나 나는 정상적인 프로세스가 이런 종류의 일을하는 곳에서 어떤 문서도 찾을 수 없기 때문에 어떤 종류의 해결 방법이 있다는 것이 행복하다.

+0

나는 마침내이 문제를 해결하고 귀하의 대답이 정확하지 않다는 것을 알았습니다. 내가 찾은 것에 대한 답을 수정해도 괜찮습니까? 아이디어를 가져 주셔서 감사합니다. – djangofan

관련 문제