2012-09-05 14 views
5

में HTTP का उपयोग कर एक फ़ाइल डाउनलोड करें मैं वेब साइट पर नेविगेट करने और वेबड्राइवर का उपयोग करके फ़ाइल डाउनलोड करने के लिए वेबड्राइवर का उपयोग करने का प्रयास कर रहा हूं। जब मैंने ऐसा किया, फ़ाइल डाउनलोड संवाद पॉप अप किया।वेबड्राइवर

WebDriver driver = new ChromeDriver(); 
driver.get("http://xxx/file1.txt"); 

मैं सोच रहा हूँ वहाँ किसी भी तरह से सिर्फ WebDriver में एक विधि कॉल क्लिक अनुकरण के बिना नियमित रूप से HTTPS अनुरोध का उपयोग कर फ़ाइल डाउनलोड करने के लिए है?

अग्रिम धन्यवाद।

उत्तर

8

कम से कम कोई भी तरीका नहीं है जो सभी ब्राउज़रों में काम करता है। आप बिना किसी संकेत के निर्दिष्ट स्थान पर फ़ाइलों को डाउनलोड करने के लिए कुछ ब्राउज़रों (फ़ायरफ़ॉक्स और क्रोम) को कॉन्फ़िगर करने में सक्षम हो सकते हैं। हालांकि, आप जो कुछ पूछ रहे हैं उसके लिए, आपको सेलेनियम की बिल्कुल आवश्यकता नहीं है। कोई प्रोग्रामेटिक HTTP क्लाइंट करेगा। जावा में, मैं अपाचे से HttpClient को देखने की अनुशंसा करता हूं; एक HttpWebRequest का उपयोग कर .NET में काम पूरा हो जाएगा। ध्यान दें कि यदि आप जिस फ़ाइल को फ़ाइल डाउनलोड कर रहे हैं उसे प्रमाणीकरण की आवश्यकता है, तो आपको अपने HTTP अनुरोध में कस्टम शीर्षलेख निर्दिष्ट करने की आवश्यकता हो सकती है।

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

+0

धन्यवाद, लेकिन मैं पहले से लॉग इन करें और फिर डाउनलोड पृष्ठ के लिए मिलता है और यूआरएल को क्रॉल करने की जरूरत है। यूआरएल पर सीधे हिट प्राधिकरण प्रक्रिया के कारण काम नहीं करेगा। – zsong

+2

एक पल के लिए ईसाई पाने के लिए, ब्राउज़र केवल HTTP का उपयोग करके फ़ाइल डाउनलोड कैसे करता है? कई मामलों में, प्रमाणीकरण प्रक्रिया प्रमाणीकरण जानकारी युक्त एक कुकी सेट करती है, जिसे HTTP अनुरोध के शीर्षकों में पास किया जाता है। सौभाग्य से, HTTP क्लाइंट लाइब्रेरी आमतौर पर आपको HTTP अनुरोध शीर्षकों पर नियंत्रण का एक उपाय करने की अनुमति देती है, इसलिए आपको केवल कुकी की जानकारी चाहिए। मैं इस मुद्दे को हल करने के लिए अपना उत्तर संपादित करूंगा, जिसका मूल प्रश्न में उल्लेख नहीं किया गया था। – JimEvans

+1

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

6

हाँ आप कर सकते हैं। आपको एक कस्टम क्रोमड्राइवर प्रोफ़ाइल सेट करने की आवश्यकता है:

profile = Selenium::WebDriver::Chrome::Profile.new 
profile['download.prompt_for_download'] = false 
profile['download.default_directory'] = download_directory 

यह किसी भी संवाद को संकेत नहीं देगा। मेरे पास डाउनलोड निर्देशिका को सेटअप करने के तरीके के बारे में अधिक विस्तृत उत्तर था और यह सत्यापित करता है कि फ़ाइल किसी भी दिए गए आकार here है।

अतिरिक्त chromedriver स्विच यहां पाया जा सकता है: http://peter.sh/experiments/chromium-command-line-switches/