का उपयोग करके फ़ाइल अपलोड और डाउनलोड कैसे करें Selenium

⚡ स्मार्ट सारांश

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

  • 📤 अपलोड विधि: ब्राउज़ पर क्लिक किए बिना पूर्ण फ़ाइल पथ को पुश करने के लिए फ़ाइल इनपुट एलिमेंट पर sendKeys() का उपयोग करें।
  • 📥 डाउनलोड पथ: ChromeOptions या CDP Page.setDownloadBehavior के माध्यम से एक कस्टम डाउनलोड डायरेक्टरी कॉन्फ़िगर करें। Selenium 4.
  • 🪟 देशी संवाद: जब ऑपरेटिंग सिस्टम का फ़ाइल पिकर वेबड्राइवर को इंटरैक्ट करने से रोकता है, तो ऑटोइट स्क्रिप्ट या java.awt.Robot को ट्रिगर करें।
  • 🤖 एआई सहायता: जेनरेटिव एआई स्वचालित रूप से चयनकर्ताओं का सुझाव देता है, परीक्षण डेटा फ़ाइलें बनाता है और डाउनलोड की गई फ़ाइल की अखंडता को मान्य करता है।
  • सत्यापन जाँच: प्रतिक्रिया संदेशों के माध्यम से अपलोड की सफलता की पुष्टि करें और फ़ाइल आकार या चेकसम तुलना का उपयोग करके डाउनलोड को सत्यापित करें।

का उपयोग करके फ़ाइल अपलोड और डाउनलोड कैसे करें Selenium

वेबड्राइवर में फ़ाइलें अपलोड करना बहुत आसान है। इसके लिए फ़ाइल-सेलेक्ट इनपुट फ़ील्ड में sendKeys() मेथड का उपयोग करके अपलोड की जाने वाली फ़ाइल का पाथ दर्ज करना होता है। इस ट्यूटोरियल में, आप फ़ाइल अपलोड और डाउनलोड करने का तरीका सीखेंगे। Selenium वेबड्राइवर.

फ़ाइल अपलोड कैसे करें Selenium

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

फ़ाइल अपलोड करें Selenium
फ़ाइल अपलोड पॉपअप को संभालें Selenium वेबड्राइवर

मान लीजिए कि हम “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”);

// "मैं सेवा की शर्तों को स्वीकार करता/करती हूँ" चेकबॉक्स पर निशान लगाएँ
ड्राइवर.फाइंडएलिमेंट(बाय.आईडी("शर्तें")).क्लिक();

// “अपलोड फ़ाइल” बटन पर क्लिक करें
ड्राइवर.फाइंडएलिमेंट(बाय.नाम("भेजना")).क्लिक();
}
}

इस स्क्रिप्ट को चलाने के बाद, आप फ़ाइल को सफलतापूर्वक अपलोड करने में सक्षम हो जाएंगे और आपको कुछ इस तरह का संदेश प्राप्त होगा।

फ़ाइल अपलोड करें Selenium

वेबड्राइवर में फाइलें अपलोड करते समय निम्नलिखित दो बातों का ध्यान रखें:

  1. “ब्राउज़” बटन पर क्लिक करने का अनुकरण करने की कोई आवश्यकता नहीं है। वेबड्राइवर स्वचालित रूप से फ़ाइल पथ को फ़ाइल-चयन टेक्स्ट बॉक्स में दर्ज कर देता है। तत्व।
  2. अपने फ़ाइल पथ को सेट करते समय Java IDE में, बैक-स्लैश के लिए उचित एस्केप कैरेक्टर का उपयोग करें।

फ़ाइल अपलोड करें Selenium

AutoIt के साथ नॉन-इनपुट अपलोड डायलॉग को हैंडल करना

जब पेज नेटिव बटन के बजाय कस्टम ब्राउज़ बटन का उपयोग करता है element में, sendKeys() काम नहीं करता है। उस स्थिति में, आप AutoIt स्क्रिप्ट को कॉल कर सकते हैं। Selenium ऑपरेटिंग सिस्टम के डायलॉग बॉक्स में फ़ाइल का पथ टाइप करें और एंटर दबाएं।

नीचे दी गई स्क्रिप्ट को इस रूप में सहेजें अपलोड.au3इसे संकलित करें अपलोड.एक्सईफिर इसे वहां से लागू करें Java ब्राउज़ बटन पर क्लिक करने के बाद।

; upload.au3 – ओपन डायलॉग बॉक्स के खुलने का इंतजार करता है और फ़ाइल पथ टाइप करता है
विनवेटएक्टिव("खुला हुआ")
भेजना(“सी:\न्यूएचटीएमएल.एचटीएमएल”)
भेजना("{प्रवेश करना}")

से 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 फोल्डर में रखें जिसे आपने ऊपर दिए गए चरण में बनाया था।

Wget की स्थापना

चरण 2) रन खोलने के लिए दबाएँ Windows key + “R” दबाएं; “cmd” टाइप करें और ओके पर क्लिक करें।

Wget की स्थापना

रूट डायरेक्टरी में जाने के लिए “cd /” कमांड टाइप करें।

Wget की स्थापना

चरण 3) यह जांचने के लिए कमांड टाइप करें कि दिया गया सेटअप काम कर रहा है या नहीं।

cmd /c C:\\Wget\\wget.exe -PC: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Wget की स्थापना

ऐसा लगता है कि C ड्राइव में लिखने में कोई समस्या है।

चरण 4) कोड को निष्पादित करने से पहले आपको कमांड लाइन में wget त्रुटियों को डीबग करना होगा। Selenium वेबड्राइवर। ये त्रुटियाँ बनी रहेंगी। Eclipse और त्रुटि संदेश उतने जानकारीपूर्ण नहीं होंगे। सबसे पहले कमांड लाइन का उपयोग करके wget को चलाना सीखें। यदि यह कमांड लाइन में काम करता है, तो यह निश्चित रूप से काम करेगा। Eclipse.

हमारे उदाहरण में, जैसा कि चरण 3 में दिखाया गया है, C ड्राइव में लिखने में समस्या आ रही है। आइए डाउनलोड स्थान को D ड्राइव में बदलें और परिणाम देखें।

cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Wget की स्थापना

Messenger सफलतापूर्वक डाउनलोड किया गया.

आगे बढ़ने से पहले, डाउनलोड की गई फ़ाइल को डिलीट करना न भूलें।

WebDriver और Wget का उपयोग करना

निम्नलिखित उदाहरण में, हम याहू नामक एक लोकप्रिय चैट सॉफ्टवेयर को डाउनलोड करने के लिए वेबड्राइवर और wget का उपयोग करेंगे Messengerहमारा आधार URL होगा https://demo.guru99.com/test/yahoo.html.

WebDriver और Wget का उपयोग करना

चरण 1) “java.io.IOException” पैकेज को आयात करें क्योंकि हमें चरण 4 में बाद में IOException को पकड़ना होगा।

WebDriver और Wget का उपयोग करना

चरण 2) डाउनलोड लिंक के "href" मान को प्राप्त करने के लिए getAttribute() फ़ंक्शन का उपयोग करें और इसे एक स्ट्रिंग वेरिएबल के रूप में सहेजें। इस मामले में, हमने वेरिएबल का नाम "sourceLocation" रखा है।

WebDriver और Wget का उपयोग करना

चरण 3) निम्नलिखित कमांड का उपयोग करके wget के लिए सिंटैक्स सेट करें।

WebDriver और Wget का उपयोग करना

चरण 4) हमारे वेबड्राइवर कोड से wget को कॉल करके डाउनलोड प्रक्रिया आरंभ करें।

WebDriver और 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 इंस्टॉलर सफलतापूर्वक वहां डाउनलोड किया गया था।

WebDriver और Wget का उपयोग करना

कस्टम डाउनलोड पथ सेट करना Selenium 4 सीडीपी

Selenium 4 क्रोम डेवलपर टूल्स प्रोटोकॉल को उजागर करता है, जो आपको किसी तीसरे पक्ष के टूल के बिना ब्राउज़र डाउनलोड व्यवहार को नियंत्रित करने की अनुमति देता है। नीचे दिया गया कोड स्निपेट सभी डाउनलोड को एक कस्टम फ़ोल्डर में निर्देशित करता है और 'सेव ऐज़' प्रॉम्प्ट को छोड़ देता है, इसलिए फ़ाइलें वहीं पहुँचती हैं जहाँ परीक्षण की अपेक्षा होती है।

क्रोमड्राइवर ड्राइवर = नई क्रोमड्राइवर();
नक्शा<तार,वस्तु> पैरामीटर = नई हैशमैप<>();
पैरामीटर्स.पुट("व्यवहार", "अनुमति दें");
पैरामीटर्स.पुट(“डाउनलोड पथ”, “D:\\selenium-downloads”);
ड्राइवर.एक्जीक्यूटसीडीपीकमांड(“Page.setDownloadBehavior”, पैरामीटर);
ड्राइवर.गेट(“https://demo.guru99.com/test/yahoo.html”);
ड्राइवर.फाइंडएलिमेंट(बाय.आईडी(“मैसेंजर-डाउनलोड”)).क्लिक();

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

अक्सर पूछे जाने वाले प्रश्न

Selenium sendKeys() को कॉल करता है फ़ाइल पथ को पूर्ण रूप से दर्शाने वाला तत्व। ब्राउज़र सीधे फ़ील्ड को भरता है, इसलिए कोई OS फ़ाइल पिकर नहीं खुलता और ब्राउज़ पर क्लिक करने की आवश्यकता नहीं होती।

जब पेज पर फ़ाइल इनपुट उपलब्ध न हो, तो AutoIt का उपयोग करें। Windows या फिर java.awt.Robot क्लास का उपयोग करें। ये टूल सक्रिय OS डायलॉग बॉक्स में पाथ टाइप करते हैं और ब्राउज़ बटन पर क्लिक करने के बाद एंटर दबाते हैं।

executeCdpCommand(“Page.setDownloadBehavior”, params) को कॉल करें, जिसमें behavior को allow पर सेट किया गया हो और downloadPath को आपके फ़ोल्डर पर सेट किया गया हो। Selenium 4 कमांड को क्रोम डेवलपर टूल्स पर भेजता है और सेव ऐज़ प्रॉम्प्ट को छोड़ देता है।

जी हां। एआई सहायक आपके अपलोड फॉर्म को पढ़ते हैं, चयनकर्ताओं का सुझाव देते हैं, खाली, बड़े आकार के या गलत एक्सटेंशन वाले सैंपल जैसी सीमा फाइलें तैयार करते हैं और sendKeys() ब्लॉक लिखते हैं। इससे सेटअप का समय कम हो जाता है और उन मुश्किल मामलों का पता चलता है जिन्हें अक्सर मानव परीक्षक नज़रअंदाज़ कर देते हैं।

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

Wget ब्राउज़र को पूरी तरह से बायपास कर देता है और कमांड-लाइन प्रक्रिया के माध्यम से फ़ाइल को सीधे डिस्क पर सहेजता है। यह पुराने सिस्टम पर उपयोगी है। Selenium 2 या 3 ऐसे सेटअप जहां सीडीपी और क्रोमऑप्शंस डाउनलोड प्राथमिकताएं उपलब्ध नहीं हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: