2012-05-08 26 views
8

Tôi có một ứng dụng A cần xử lý một biểu mẫu được gửi bằng phương thức POST. Các hình thức thực tế, mà bắt đầu yêu cầu, là trong ứng dụng hoàn toàn riêng biệt B. Tôi đang thử nghiệm ứng dụng A bằng cách sử dụng Selenium, và tôi muốn viết một trường hợp thử nghiệm để xử lý gửi biểu mẫu.Thực hiện yêu cầu POST trong Selenium mà không cần điền vào biểu mẫu?

Cách thực hiện việc này? Điều này có thể được thực hiện trong Selenium không? Ứng dụng A không có biểu mẫu có thể bắt đầu yêu cầu này.

Lưu ý rằng yêu cầu phải sử dụng POST, nếu không tôi chỉ có thể sử dụng phương thức WebDriver.get (url).

+1

Tại sao bạn không điền vào biểu mẫu với selen và gửi biểu mẫu và đảm bảo bạn được trình bày với dữ liệu thích hợp khi thực hiện hoàn tất. Tuy nhiên, nếu ứng dụng B là xuống kiểm tra này sẽ luôn thất bại - nói cách khác tôi nghĩ rằng bạn cần phải giả lập tương tác này. – Scott

+0

@Scott: Tôi sẽ không có bất kỳ quyền truy cập nào vào ứng dụng B, nơi biểu mẫu sẽ xuất hiện. –

+1

có vẻ như cách duy nhất để làm điều đó là giả lập biểu mẫu bên trong ứng dụng mà bạn có quyền truy cập vào, nếu không selen không có ý nghĩa nhất trong ngữ cảnh này. – Scott

Trả lời

3

Với selen, bạn có thể thực thi Javascript tùy ý bao gồm programmatically submit a form.

đơn giản JS thực hiện với Selenium Java:

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

và với Javascript bạn có thể tạo một yêu cầu POST, thiết lập các thông số cần thiết và các tiêu đề HTTP, và gửi nó.

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'); 

Nếu bạn cần phải vượt qua để selen văn bản phản ứng sau đó thay vì sử dụng alert(this.responseText)return this.responseText và gán kết quả của executeScript() cho một biến java.

4

Tôi không nghĩ rằng có thể sử dụng Selenium. Không có cách nào để tạo yêu cầu POST không sử dụng trình duyệt web và Selenium hoạt động bằng cách điều khiển trình duyệt web. Tôi khuyên bạn nên sử dụng thư viện HTTP để gửi yêu cầu POST thay thế và chạy cùng với kiểm tra Selenium của bạn. (Bạn đang sử dụng khung ngôn ngữ/thử nghiệm nào?)

+4

Java + JUnit. Tôi có thể đưa ra yêu cầu POST bằng cách sử dụng các công cụ khác nhưng làm thế nào tôi có thể làm cho Selenium xử lý phản hồi? –

Các vấn đề liên quan