का उपयोग करके फ़ाइल अपलोड और डाउनलोड कैसे करें Selenium
⚡ स्मार्ट सारांश
फाइल अपलोड और डाउनलोड करने के लिए Selenium WebDriver वर्कफ़्लो इनपुट फ़ील्ड के लिए नेटिव sendKeys(), डायलॉग के लिए AutoIt या Robot, और CDP कमांड पर निर्भर करते हैं। Selenium 4. स्वचालन संचालन के दौरान सुरक्षित डाउनलोड पथ सेट करना।

वेबड्राइवर में फ़ाइलें अपलोड करना बहुत आसान है। इसके लिए फ़ाइल-सेलेक्ट इनपुट फ़ील्ड में sendKeys() मेथड का उपयोग करके अपलोड की जाने वाली फ़ाइल का पाथ दर्ज करना होता है। इस ट्यूटोरियल में, आप फ़ाइल अपलोड और डाउनलोड करने का तरीका सीखेंगे। Selenium वेबड्राइवर.
फ़ाइल अपलोड कैसे करें Selenium
इस अनुभाग के लिए, हम उपयोग करेंगे https://demo.guru99.com/test/upload/ हमारे परीक्षण आवेदन के रूप में। यह साइट किसी भी आगंतुक को साइन अप करने की आवश्यकता के बिना आसानी से फ़ाइलें अपलोड करने की अनुमति देती है।

मान लीजिए कि हम “C:\newhtml.html” फ़ाइल अपलोड करना चाहते हैं। हमारा वेबड्राइवर कोड नीचे दिखाए गए कोड जैसा होना चाहिए।
आयात org.openqa.selenium.*;
आयात org.openqa.selenium.फ़ायरफ़ॉक्स.Firefoxचालक;
सार्वजनिक वर्ग PG9 {
सार्वजनिक स्थैतिक शून्यता मुख्य(तार[] तर्क) {
सिस्टम.सेटप्रॉपर्टी(“वेबड्राइवर.गेको.ड्राइवर”,“C:\\geckodriver.exe”);
तार बेसयूआरएल = “https://demo.guru99.com/test/upload/”;
वेबड्राइवर ड्राइवर = नई Firefoxड्राइवर();
ड्राइवर.गेट(बेसयूआरएल);
वेबएलिमेंट अपलोडएलिमेंट = ड्राइवर.फाइंडएलिमेंट(बाय.आईडी(“अपलोडफ़ाइल_0”));
// फ़ाइल चयन इनपुट फ़ील्ड में फ़ाइल पथ दर्ज करें
अपलोडएलिमेंट.सेंडकीज़(“C:\\newhtml.html”);
// "मैं सेवा की शर्तों को स्वीकार करता/करती हूँ" चेकबॉक्स पर निशान लगाएँ
ड्राइवर.फाइंडएलिमेंट(बाय.आईडी("शर्तें")).क्लिक();
// “अपलोड फ़ाइल” बटन पर क्लिक करें
ड्राइवर.फाइंडएलिमेंट(बाय.नाम("भेजना")).क्लिक();
}
}
इस स्क्रिप्ट को चलाने के बाद, आप फ़ाइल को सफलतापूर्वक अपलोड करने में सक्षम हो जाएंगे और आपको कुछ इस तरह का संदेश प्राप्त होगा।
वेबड्राइवर में फाइलें अपलोड करते समय निम्नलिखित दो बातों का ध्यान रखें:
- “ब्राउज़” बटन पर क्लिक करने का अनुकरण करने की कोई आवश्यकता नहीं है। वेबड्राइवर स्वचालित रूप से फ़ाइल पथ को फ़ाइल-चयन टेक्स्ट बॉक्स में दर्ज कर देता है। तत्व।
- अपने फ़ाइल पथ को सेट करते समय Java IDE में, बैक-स्लैश के लिए उचित एस्केप कैरेक्टर का उपयोग करें।
AutoIt के साथ नॉन-इनपुट अपलोड डायलॉग को हैंडल करना
जब पेज नेटिव बटन के बजाय कस्टम ब्राउज़ बटन का उपयोग करता है element में, sendKeys() काम नहीं करता है। उस स्थिति में, आप AutoIt स्क्रिप्ट को कॉल कर सकते हैं। Selenium ऑपरेटिंग सिस्टम के डायलॉग बॉक्स में फ़ाइल का पथ टाइप करें और एंटर दबाएं।
नीचे दी गई स्क्रिप्ट को इस रूप में सहेजें अपलोड.au3इसे संकलित करें अपलोड.एक्सईफिर इसे वहां से लागू करें Java ब्राउज़ बटन पर क्लिक करने के बाद।
विनवेटएक्टिव("खुला हुआ")
भेजना(“सी:\न्यूएचटीएमएल.एचटीएमएल”)
भेजना("{प्रवेश करना}")
से Javaब्राउज़ पर क्लिक करने के बाद हेल्पर को सक्रिय करें:
क्रम.getRuntime().exec(“C:\\AutoIt\\upload.exe”);
java.awt.Robot क्लास एक शुद्ध-Java AutoIt उपलब्ध न होने पर यह एक वैकल्पिक समाधान है, हालांकि AutoIt अधिक विश्वसनीय है। Windows क्योंकि यह शीर्षक के आधार पर संवाद की प्रतीक्षा करता है।
किसी फ़ाइल को कैसे डाउनलोड करें? Selenium वेबड्राइवर
वेबड्राइवर में डाउनलोड संवाद बॉक्स तक पहुंचने की कोई क्षमता नहीं है जब आप किसी डाउनलोड लिंक या बटन पर क्लिक करते हैं तो ब्राउज़र द्वारा प्रस्तुत किए जाते हैं। हालाँकि, हम "wget" नामक एक अलग प्रोग्राम का उपयोग करके इन डायलॉग बॉक्स को बायपास कर सकते हैं।
Wget क्या है?
Wget एक छोटा और उपयोग में आसान कमांड-लाइन प्रोग्राम है जिसका उपयोग डाउनलोड को स्वचालित करने के लिए किया जाता हैमूलतः, हम डाउनलोड प्रक्रिया करने के लिए अपने वेबड्राइवर स्क्रिप्ट से Wget तक पहुंचेंगे।
Wget की स्थापना
चरण 1) अपने C ड्राइव में एक नया फ़ोल्डर बनाएं और उसका नाम “Wget” रखें।
wget.exe डाउनलोड करें यहाँ से और इसे उस Wget फोल्डर में रखें जिसे आपने ऊपर दिए गए चरण में बनाया था।
चरण 2) रन खोलने के लिए दबाएँ Windows key + “R” दबाएं; “cmd” टाइप करें और ओके पर क्लिक करें।
रूट डायरेक्टरी में जाने के लिए “cd /” कमांड टाइप करें।
चरण 3) यह जांचने के लिए कमांड टाइप करें कि दिया गया सेटअप काम कर रहा है या नहीं।
ऐसा लगता है कि C ड्राइव में लिखने में कोई समस्या है।
चरण 4) कोड को निष्पादित करने से पहले आपको कमांड लाइन में wget त्रुटियों को डीबग करना होगा। Selenium वेबड्राइवर। ये त्रुटियाँ बनी रहेंगी। Eclipse और त्रुटि संदेश उतने जानकारीपूर्ण नहीं होंगे। सबसे पहले कमांड लाइन का उपयोग करके wget को चलाना सीखें। यदि यह कमांड लाइन में काम करता है, तो यह निश्चित रूप से काम करेगा। Eclipse.
हमारे उदाहरण में, जैसा कि चरण 3 में दिखाया गया है, C ड्राइव में लिखने में समस्या आ रही है। आइए डाउनलोड स्थान को D ड्राइव में बदलें और परिणाम देखें।
Messenger सफलतापूर्वक डाउनलोड किया गया.
आगे बढ़ने से पहले, डाउनलोड की गई फ़ाइल को डिलीट करना न भूलें।
WebDriver और Wget का उपयोग करना
निम्नलिखित उदाहरण में, हम याहू नामक एक लोकप्रिय चैट सॉफ्टवेयर को डाउनलोड करने के लिए वेबड्राइवर और wget का उपयोग करेंगे Messengerहमारा आधार URL होगा https://demo.guru99.com/test/yahoo.html.
चरण 1) “java.io.IOException” पैकेज को आयात करें क्योंकि हमें चरण 4 में बाद में IOException को पकड़ना होगा।
चरण 2) डाउनलोड लिंक के "href" मान को प्राप्त करने के लिए getAttribute() फ़ंक्शन का उपयोग करें और इसे एक स्ट्रिंग वेरिएबल के रूप में सहेजें। इस मामले में, हमने वेरिएबल का नाम "sourceLocation" रखा है।
चरण 3) निम्नलिखित कमांड का उपयोग करके wget के लिए सिंटैक्स सेट करें।
चरण 4) हमारे वेबड्राइवर कोड से wget को कॉल करके डाउनलोड प्रक्रिया आरंभ करें।
संक्षेप में, आपका वेबड्राइवर कोड नीचे दिखाए गए कोड जैसा दिख सकता है।
आयात जावा.io.IOException;
आयात org.openqa.selenium.*;
आयात org.openqa.selenium.फ़ायरफ़ॉक्स.Firefoxचालक;
सार्वजनिक वर्ग PG8 {
सार्वजनिक स्थैतिक शून्यता मुख्य(तार[] तर्क) {
सिस्टम.सेटप्रॉपर्टी(“वेबड्राइवर.गेको.ड्राइवर”,“C:\\geckodriver.exe”);
तार बेसयूआरएल = “https://demo.guru99.com/test/yahoo.html”;
वेबड्राइवर ड्राइवर = नई Firefoxड्राइवर();
ड्राइवर.गेट(बेसयूआरएल);
वेबएलिमेंट डाउनलोड बटन = ड्राइवर.फाइंडएलिमेंट(बाय.आईडी(“मैसेंजर-डाउनलोड”));
तार sourceLocation = downloadButton.getAttribute(“एचरेफ़”);
तार wget_command = “cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate“ + स्रोत स्थान;
कोशिश {
प्रक्रिया exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println(निकास मूल्य: “ + निकास मान);
} पकड़ (रुकावट | आईओ अपवाद पूर्व) {
System.out.println(ex.toString());
}
ड्राइवर.क्लोज();
}
}
इस कोड को निष्पादित करने के बाद, अपने डी ड्राइव की जांच करें और सत्यापित करें कि याहू Messenger इंस्टॉलर सफलतापूर्वक वहां डाउनलोड किया गया था।
कस्टम डाउनलोड पथ सेट करना Selenium 4 सीडीपी
Selenium 4 क्रोम डेवलपर टूल्स प्रोटोकॉल को उजागर करता है, जो आपको किसी तीसरे पक्ष के टूल के बिना ब्राउज़र डाउनलोड व्यवहार को नियंत्रित करने की अनुमति देता है। नीचे दिया गया कोड स्निपेट सभी डाउनलोड को एक कस्टम फ़ोल्डर में निर्देशित करता है और 'सेव ऐज़' प्रॉम्प्ट को छोड़ देता है, इसलिए फ़ाइलें वहीं पहुँचती हैं जहाँ परीक्षण की अपेक्षा होती है।
नक्शा<तार,वस्तु> पैरामीटर = नई हैशमैप<>();
पैरामीटर्स.पुट("व्यवहार", "अनुमति दें");
पैरामीटर्स.पुट(“डाउनलोड पथ”, “D:\\selenium-downloads”);
ड्राइवर.एक्जीक्यूटसीडीपीकमांड(“Page.setDownloadBehavior”, पैरामीटर);
ड्राइवर.गेट(“https://demo.guru99.com/test/yahoo.html”);
ड्राइवर.फाइंडएलिमेंट(बाय.आईडी(“मैसेंजर-डाउनलोड”)).क्लिक();
आप अपेक्षित फ़ाइल नाम के लिए लक्ष्य निर्देशिका की जाँच करके और उसके आकार की जाँच करके डाउनलोड को सत्यापित कर सकते हैं, जिससे बाहरी स्क्रिप्ट के बिना परीक्षण निश्चित हो जाता है।












