2012-05-08 3 views
8

POST 메서드로 제출 된 양식 제출을 처리해야하는 응용 프로그램 A가 있습니다. 요청을 시작하는 실제 양식은 완전히 별개의 응용 프로그램 B입니다. 응용 프로그램 A를 Selenium을 사용하여 테스트 중이며 양식 제출 처리를위한 테스트 사례를 작성하려고합니다.양식을 작성하지 않고 Selenium에서 POST 요청을하나요?

어떻게 하시겠습니까? Selenium에서이 작업을 수행 할 수 있습니까? 응용 프로그램 A에는이 요청을 시작할 수있는 양식이 없습니다.

요청이 POST를 사용해야한다는 점에 유의하십시오. 그렇지 않으면 WebDriver.get (url) 메소드를 사용할 수 있습니다.

+1

셀렌으로 양식을 작성하고 양식을 제출하고 실행 완료시 적절한 데이터가 제공되는지 확인하십시오. 그러나 응용 프로그램 B가 다운되면이 테스트는 항상 실패합니다. 즉,이 상호 작용을 조롱해야한다고 생각합니다. – Scott

+0

@Scott : 양식이있는 곳에 신청서 B에 대한 액세스 권한이 없습니다. –

+1

당신이 액세스 할 수있는 응용 프로그램 내에서 양식을 조롱하는 것이 유일한 방법 인 것 같습니다. 그렇지 않으면 셀렌이이 상황에서 가장 의미가 없습니다. – Scott

답변

3

셀렌으로 programmatically submit a form을 포함한 임의의 자바 스크립트를 실행할 수 있습니다. 셀레늄 자바

간단한 JS 실행 :

if (driver instanceof JavascriptExecutor) { 
    ((JavascriptExecutor) driver).executeScript("alert('hello world');"); 
} 

및 자바 스크립트와 함께 당신은 POST 요청을 만들고 필요한 매개 변수 및 HTTP 헤더를 설정하고 제출할 수 있습니다

.

var xhr = new XMLHttpRequest(); 
xhr.open('POST', 'http://httpbin.org/post', true); 
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
xhr.onload = function() { 
    alert(this.responseText); 
}; 

xhr.send('login=test&password=test'); 

당신이 alert(this.responseText) 사용 return this.responseText 대신 다음 셀레늄에 응답 텍스트를 건너와 자바 변수에 executeScript()의 결과를 할당해야합니다.

4

Selenium을 사용하는 것이 가능하지 않다고 생각합니다. 웹 브라우저를 사용하지 않고 POST 요청을 생성하는 방법은 없으며 Selenium은 웹 브라우저를 조작하여 작동합니다. 대신 POST 요청을 보내고 Selenium 테스트와 함께 실행하려면 HTTP 라이브러리를 사용하는 것이 좋습니다. (어떤 언어/테스트 프레임 워크를 사용하고 있습니까?)

+4

Java + JUnit. 다른 도구를 사용하여 POST 요청을 할 수는 있지만 어떻게 Selenium이 응답을 처리하게 할 수 있습니까? –

관련 문제