2012-05-08 4 views
8

मेरे पास एक एप्लिकेशन ए है जो पोस्ट विधि से सबमिट किए गए फॉर्म को संभालना चाहिए। वास्तविक फॉर्म, जो अनुरोध शुरू करता है, पूरी तरह से अलग आवेदन बी में है। मैं सेलेनियम का उपयोग कर ए ए का परीक्षण कर रहा हूं, और मैं फ़ॉर्म सबमिट करने के लिए एक टेस्ट केस लिखना चाहता हूं।सेलेनियम में एक फॉर्म भरने के बिना एक POST अनुरोध करना?

यह कैसे करें? क्या यह सेलेनियम में किया जा सकता है? एप्लिकेशन ए में कोई ऐसा फॉर्म नहीं है जो इस अनुरोध को आरंभ कर सके।

नोट, कि अनुरोध POST का उपयोग करना चाहिए, अन्यथा मैं केवल WebDriver.get (url) विधि का उपयोग कर सकता हूं।

+1

आप सेलेनियम के साथ फॉर्म क्यों भरते हैं और फॉर्म जमा नहीं करते हैं और सुनिश्चित करते हैं कि निष्पादन पूरा करने पर आपको उचित डेटा प्रस्तुत किया गया हो। हालांकि, यदि आवेदन बी नीचे है तो यह परीक्षण हमेशा असफल रहेगा - दूसरे शब्दों में मुझे लगता है कि आपको इस बातचीत को नकल करने की आवश्यकता है। – Scott

+0

@ स्कॉट: मेरे पास आवेदन बी तक कोई पहुंच नहीं होगी जहां फॉर्म होगा। –

+1

ऐसा लगता है कि ऐसा करने का एकमात्र तरीका आपके द्वारा उपयोग किए जाने वाले एप्लिकेशन के अंदर फॉर्म का नकल करना है, अन्यथा सेलेनियम इस संदर्भ में सबसे अधिक समझ नहीं लेता है। – Scott

उत्तर

3

सेलेनियम के साथ आप programmatically submit a form सहित मनमाने ढंग से जावास्क्रिप्ट निष्पादित कर सकते हैं।

सरल जे एस सेलेनियम जावा के साथ निष्पादन:

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

और जावास्क्रिप्ट के साथ, एक पोस्ट अनुरोध बनाने के लिए आवश्यक मापदंडों और 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

मुझे नहीं लगता कि सेलेनियम का उपयोग करना संभव है। वेब ब्राउज़र का उपयोग करके कुछ भी नहीं पोस्ट करने का कोई तरीका नहीं है, और सेलेनियम वेब ब्राउज़र में हेरफेर करके काम करता है। मेरा सुझाव है कि आप इसके बजाय POST अनुरोध भेजने के लिए एक HTTP लाइब्रेरी का उपयोग करें, और अपने सेलेनियम परीक्षणों के साथ इसे चलाएं। (आप किस भाषा/परीक्षण ढांचे का उपयोग कर रहे हैं?)

+4

जावा + जुनीट। मैं अन्य टूल्स का उपयोग करके POST अनुरोध कर सकता हूं लेकिन मैं सेलेनियम को प्रतिक्रिया कैसे कर सकता हूं? –

संबंधित मुद्दे