Selenium वेबड्राइवर Java कार्यक्रम का उदाहरण

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

Selenium वेबड्राइवर Java प्रोग्राम का उदाहरण आपको आपकी पहली एंड-टू-एंड ऑटोमेशन स्क्रिप्ट के बारे में बताता है। Lessइस पाठ्यक्रम में पर्यावरण सेटअप, तत्वों का पता लगाना, इनपुट भेजना, नेविगेशन, सत्यापन, प्रतीक्षा, अपवाद प्रबंधन और विश्वसनीय वेबड्राइवर परीक्षणों के लिए सर्वोत्तम प्रथाओं को शामिल किया गया है।

  • ⚙️ पर्यावरण सेटअप: स्थापित करें Java, Eclipse या इंटेलिज, कॉन्फ़िगर करें Selenium लाइब्रेरीज़ का उपयोग करें, और अपने ब्राउज़र संस्करण के लिए सही ड्राइवर बाइनरी चुनें।
  • 🧭 तत्व लोकेटर: ब्राउज़रों और रिलीज़ में तत्वों की स्थिर रूप से पहचान करने के लिए ID, नाम, क्लास, XPath, CSS सेलेक्टर और लिंकटेक्स्ट का उपयोग करें।
  • क्रियाएँ और इनपुट: वेबड्राइवर पूर्ण उपयोगकर्ता-शैली की बातचीत के लिए क्लिक, सेंडकीज़, सबमिट, सेलेक्ट ड्रॉपडाउन और कीबोर्ड इवेंट्स का समर्थन करता है।
  • स्मार्ट वेट्स: अस्थिर परीक्षणों को खत्म करने के लिए, Thread.sleep को ExpectedConditions द्वारा संचालित निहित, स्पष्ट और सहज प्रतीक्षाओं से बदलें।
  • 🚨 एक्सेप्शन हेंडलिंग: ऑटोमेशन सूट को लचीला बनाए रखने के लिए NoSuchElementException, TimeoutException और StaleElementReferenceException को पकड़ें।
  • 🤖 एआई टेस्ट जनरेशन: एआई सहायक वेबड्राइवर स्क्रिप्ट तैयार करते हैं, लोकेटर सुझाते हैं और डीओएम में बदलाव होने पर सेलेक्टर को स्वतः ठीक करते हैं।

Selenium वेबड्राइवर Java कार्यक्रम

Selenium Java उदाहरण

ऊपर दिए Java पिछले ट्यूटोरियल में बनाए गए क्लास “myclass” का उपयोग करके, आइए एक वेबड्राइवर स्क्रिप्ट बनाने का प्रयास करें जो:

चरण १: लाना Mercury टूर्स का मुखपृष्ठ
चरण १: इसका शीर्षक सत्यापित करें
चरण १: तुलना का परिणाम प्रिंट करें
चरण १: संपूर्ण प्रोग्राम समाप्त करने से पहले इसे बंद कर दें।

Selenium वेबड्राइवर नमूना Code

ऊपर दिए गए परिदृश्य द्वारा प्रस्तुत तर्क के लिए नीचे वास्तविक WebDriver कोड दिया गया है

package newproject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
//comment the above line and uncomment below line to use Chrome
//import org.openqa.selenium.chrome.ChromeDriver;
public class PG1 {


    public static void main(String[] args) {
        // declaration and instantiation of objects/variables
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
		WebDriver driver = new FirefoxDriver();
		//comment the above 2 lines and uncomment below 2 lines to use Chrome
		//System.setProperty("webdriver.chrome.">driver","G:\\chromedriver.exe");
		//WebDriver driver = new ChromeDriver();
    	
        String baseUrl = "https://demo.guru99.com/test/newtours/";
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = "";

        // launch Fire fox and direct it to the Base URL
        driver.get(baseUrl);

        // get the actual value of the title
        actualTitle = driver.getTitle();

        /*
         * compare the actual title of the page with the expected one and print
         * the result as "Passed" or "Failed"
         */
        if (actualTitle.contentEquals(expectedTitle)){
            System.out.println("Test Passed!");
        } else {
            System.out.println("Test Failed");
        }
       
        //close Fire fox
        driver.close();
    }

}

नोट: प्रारंभ Firefox 35, वेब ड्राइवर का उपयोग करने के लिए आपको मोज़िला द्वारा निर्मित गेको ड्राइवर का उपयोग करना होगा। Selenium 3.0, गेको और फ़ायरफ़ॉक्स में संगतता संबंधी समस्याएं हैं और उन्हें सही तरीके से सेट करना एक कठिन काम हो सकता है। अगर कोड काम नहीं करता है, तो डाउनग्रेड करें Firefox संस्करण 47 या उससे नीचे। वैकल्पिक रूप से, आप अपनी स्क्रिप्ट क्रोम पर चला सकते हैं। Selenium क्रोम के लिए बॉक्स से बाहर काम करता है। आपको अपनी स्क्रिप्ट को क्रोम या के साथ काम करने के लिए कोड की केवल 3 पंक्तियों को बदलने की आवश्यकता है Firefox

कोड की व्याख्या करना

पैकेज आयात करना

आरंभ करने के लिए, आपको निम्नलिखित दो पैकेज आयात करने होंगे:

  1. org.openqa.सेलेनियम.*- इसमें एक विशिष्ट ड्राइवर के साथ लोड किए गए नए ब्राउज़र को इंस्टैंसिएट करने के लिए आवश्यक WebDriver क्लास शामिल है
  2. org.openqa.selenium.फ़ायरफ़ॉक्स.Firefoxचालक – इसमें शामिल है Firefoxड्राइवर वर्ग को तत्काल बनाने की आवश्यकता है Firefox-विशिष्ट ड्राइवर को वेबड्राइवर वर्ग द्वारा इंस्टैंसिएट किए गए ब्राउज़र पर स्थापित करना

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

ऑब्जेक्ट्स और वेरिएबल्स को इंस्टैंशिएट करना

सामान्यतः, ड्राइवर ऑब्जेक्ट को इसी प्रकार से इंस्टैन्शिएट किया जाता है।

WebDriver driver = new FirefoxDriver();

A Firefoxबिना पैरामीटर वाले ड्राइवर वर्ग का अर्थ है कि डिफ़ॉल्ट Firefox प्रोफ़ाइल हमारे द्वारा लॉन्च किया जाएगा Java कार्यक्रम. डिफ़ॉल्ट Firefox प्रोफ़ाइल लॉन्च करने के समान है Firefox सुरक्षित मोड में (कोई एक्सटेंशन लोड नहीं है)।

सुविधा के लिए, हमने बेस को सहेज लिया। URL और अपेक्षित शीर्षक को चर के रूप में।

ब्राउज़र सत्र शुरू करना

वेबड्राइवर प्राप्त() इस विधि का उपयोग एक नया ब्राउज़र सत्र शुरू करने और उसे निर्देशित करने के लिए किया जाता है। URL जिसे आप इसके पैरामीटर के रूप में निर्दिष्ट करते हैं।

driver.get(baseUrl);

वास्तविक पृष्ठ शीर्षक प्राप्त करें

WebDriver वर्ग में है शीर्षक प्राप्त करें() विधि जो हमेशा वर्तमान में लोड किए गए पृष्ठ का पृष्ठ शीर्षक प्राप्त करने के लिए उपयोग की जाती है।

actualTitle = driver.getTitle();

अपेक्षित और वास्तविक मूल्यों की तुलना करें

कोड का यह भाग बस एक बुनियादी का उपयोग करता है Java वास्तविक शीर्षक की अपेक्षित शीर्षक से तुलना करने के लिए if-else संरचना।

if (actualTitle.contentEquals(expectedTitle)){
            System.out.println("Test Passed!");
        } else {
            System.out.println("Test Failed");
        }

ब्राउज़र सत्र समाप्त करना

"बंद करे()” विधि का उपयोग ब्राउज़र विंडो को बंद करने के लिए किया जाता है।

driver.close();

संपूर्ण कार्यक्रम को समाप्त करना

यदि आप सभी ब्राउज़र विंडो को बंद किए बिना इस कमांड का उपयोग करते हैं, तो आपका पूरा Java प्रोग्राम समाप्त हो जाएगा, जबकि ब्राउज़र विंडो खुली रहेगी।

System.exit(0);

परीक्षण चला रहा है

इसमें कोड निष्पादित करने के दो तरीके हैं Eclipse आईडीई।

  1. On Eclipseके मेनू बार पर क्लिक करें भागो > भागो.
  2. दबाएँ कंट्रोल + F11 संपूर्ण कोड चलाने के लिए.

परीक्षण चला रहा है

यदि आपने सब कुछ सही ढंग से किया, Eclipse आउटपुट होगा “टेस्ट पास!”

परीक्षण चला रहा है

GUI तत्वों का पता लगाना

वेबड्राइवर में तत्वों का पता लगाना “findElement(By.सुनने का यंत्र())” विधि। कोड का “लोकेटर” भाग पहले चर्चा किए गए किसी भी लोकेटर के समान है Selenium आईडीई इन ट्यूटोरियल के अध्यायों को पढ़ें। वास्तव में, यह अनुशंसा की जाती है कि आप IDE का उपयोग करके GUI तत्वों का पता लगाएं और एक बार सफलतापूर्वक पहचान करने के बाद कोड को WebDriver पर निर्यात करें।

यहाँ एक है Selenium यह एक नमूना कोड है जो किसी एलिमेंट को उसकी आईडी से ढूंढता है। फेसबुक को आधार के रूप में उपयोग किया गया है। URL.

package newproject;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class PG2 {
    public static void main(String[] args) {
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
    	WebDriver driver = new FirefoxDriver();
        String baseUrl = "http://www.facebook.com";
        String tagName = "";
        
        driver.get(baseUrl);
        tagName = driver.findElement(By.id("email")).getTagName();
        System.out.println(tagName);
        driver.close();
        System.exit(0);
}
}

हम इस्तेमाल किया getTagName() विधिtracउस विशेष एलिमेंट के टैग नाम को प्रिंट करें जिसकी आईडी "ईमेल" है। चलाने पर, यह कोड "इनपुट" टैग नाम को सही ढंग से पहचान लेगा और उसे प्रिंट कर देगा। Eclipse'की कंसोल विंडो पर जाएँ।

GUI तत्वों का पता लगाना

तत्वों का पता लगाने के लिए सारांश

परिवर्तन विवरण नमूना
By.className “क्लास” विशेषता के मान के आधार पर तत्वों को ढूँढता है findElement(By.className(“someClassName”))
By.cssSelector ड्राइवर के अंतर्निहित CSS चयनकर्ता इंजन के आधार पर तत्वों को ढूँढता है findElement(By.cssSelector(“input#email”))
By.id तत्वों को उनके “id” विशेषता के मान से ढूँढता है findElement(By.id(“someId”))
 
द्वारा.linkText लिंक तत्व को उसके द्वारा प्रदर्शित सटीक पाठ के आधार पर ढूँढता है findElement(By.linkText(“पंजीकरण”))
 
नाम से “नाम” विशेषता के मान से तत्वों का पता लगाता है findElement(By.name(“someName”))
 
आंशिक लिंक टेक्स्ट द्वारा दिए गए लिंक टेक्स्ट वाले तत्वों का पता लगाता है findElement(By.partialLinkText(“REG”))
 
टैगनाम द्वारा तत्वों को उनके टैग नाम से ढूँढता है findElement(By.tagName(“div”))
 
.xpath द्वारा XPath के माध्यम से तत्वों का पता लगाता है findElement(By.xpath(“//html/body/div/table/tbody/tr/td[2]/table/
tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[2]/td[3]/ form/table/tbody/tr[5]”))

findElement(By.cssSelector()) के उपयोग पर नोट

By.cssSelector() “शामिल है” सुविधा का समर्थन नहीं करता है। इस पर विचार करें Selenium नीचे आईडीई कोड –

findElement(By.cssSelector()) के उपयोग पर नोट

In Selenium उपरोक्त आईडीई में, संपूर्ण परीक्षण पास हो गया। हालाँकि Selenium नीचे दिए गए WebDriver स्क्रिप्ट में, उसी परीक्षण ने एक त्रुटि उत्पन्न की क्योंकि By.cssSelector() विधि में उपयोग किए जाने पर WebDriver “contains” कीवर्ड का समर्थन नहीं करता है।

findElement(By.cssSelector()) के उपयोग पर नोट

कॉमन कमांड्स

वेब तत्वों को तत्काल बनाना

हर बार जब आप किसी विशेष तत्व तक पहुंचेंगे तो लंबे “driver.findElement(By.locator())” सिंटैक्स का उपयोग करने के बजाय, हम इसके लिए एक WebElement ऑब्जेक्ट को इंस्टेंटिएट कर सकते हैं। WebElement क्लास “org.openqa.selenium.*” पैकेज में समाहित है।

वेब तत्वों को तत्काल बनाना

किसी तत्व पर क्लिक करना

क्लिक करना शायद वेब तत्वों के साथ बातचीत करने का सबसे आम तरीका है। click() किसी भी तत्व पर क्लिक करने का अनुकरण करने के लिए निम्न विधि का उपयोग किया जाता है। Selenium Java उदाहरण से पता चलता है कि कैसे click() पर क्लिक करने के लिए इस्तेमाल किया गया था Mercury टूर्स के “साइन-इन” बटन पर क्लिक करें।

किसी तत्व पर क्लिक करना

click() विधि का उपयोग करते समय निम्नलिखित बातों का ध्यान रखना चाहिए।

  • यह कोई पैरामीटर/तर्क नहीं लेता है।
  • यदि लागू हो तो यह विधि स्वचालित रूप से नए पृष्ठ के लोड होने की प्रतीक्षा करती है।
  • जिस तत्व पर क्लिक किया जाना है, वह दृश्यमान होना चाहिए (ऊंचाई और चौड़ाई शून्य के बराबर नहीं होनी चाहिए)।

आदेश प्राप्त करें

Get कमांड पेज/एलिमेंट के बारे में कई महत्वपूर्ण जानकारी प्राप्त करते हैं। यहाँ कुछ महत्वपूर्ण “get” कमांड दिए गए हैं जिनसे आपको परिचित होना चाहिए।

कमानों प्रयोग
प्राप्त()

नमूना उपयोग:

  • यह स्वचालित रूप से एक नई ब्राउज़र विंडो खोलता है और आपके द्वारा कोष्ठकों में निर्दिष्ट पृष्ठ को लाता है।
  • यह इसका प्रतिरूप है Selenium आईडीई का "ओपन" कमांड.
  • पैरामीटर एक होना चाहिए तार वस्तु।
शीर्षक प्राप्त करें()

नमूना उपयोग:

  • किसी पैरामीटर की जरूरत नहीं
  • वर्तमान पृष्ठ का शीर्षक प्राप्त करता है
  • आरंभिक और अंतिम सफेद रिक्त स्थान काट दिए गए हैं
  • यदि पृष्ठ का कोई शीर्षक नहीं है तो शून्य स्ट्रिंग लौटाता है
पेजस्रोत प्राप्त करें()

नमूना उपयोग:

  • किसी पैरामीटर की जरूरत नहीं
  • पृष्ठ का स्रोत कोड स्ट्रिंग मान के रूप में लौटाता है
getCurrentUrl()

नमूना उपयोग:

  • किसी पैरामीटर की जरूरत नहीं
  • वर्तमान स्थिति को दर्शाने वाली स्ट्रिंग प्राप्त करता है URL जिसे ब्राउज़र देख रहा है
gettext ()

नमूना उपयोग:

  • आपके द्वारा निर्दिष्ट तत्व का आंतरिक पाठ प्राप्त करता है

कमांड नेविगेट करें

ये कमांड आपको विभिन्न वेब पेजों के बीच रिफ्रेश करने, जाने और आगे-पीछे जाने की अनुमति देते हैं।

नेविगेट().to()

नमूना उपयोग:

  • यह स्वचालित रूप से एक नई ब्राउज़र विंडो खोलता है और आपके द्वारा कोष्ठकों में निर्दिष्ट पृष्ठ को लाता है।
  • यह बिल्कुल वैसा ही काम करता है जैसा get() विधि.
नेविगेट().रिफ्रेश()

नमूना उपयोग:

  • किसी पैरामीटर की जरूरत नहीं है.
  • यह वर्तमान पृष्ठ को ताज़ा करता है.
नेविगेट().बैक()

नमूना उपयोग:

  • किसी पैरामीटर की जरूरत नहीं
  • यह आपको ब्राउज़र के इतिहास में एक पृष्ठ पीछे ले जाता है।
नेविगेट().फॉरवर्ड()

नमूना उपयोग:

  • किसी पैरामीटर की जरूरत नहीं
  • आपको ब्राउज़र के इतिहास में एक पृष्ठ आगे ले जाता है।

ब्राउज़र बंद करना और छोड़ना Windows

बंद करे()

नमूना उपयोग:

  • किसी पैरामीटर की जरूरत नहीं
  • यह केवल उस ब्राउज़र विंडो को बंद करता है जिसे वर्तमान में WebDriver नियंत्रित कर रहा है।
छोड़ने ()

नमूना उपयोग:

  • किसी पैरामीटर की जरूरत नहीं
  • यह वेबड्राइवर द्वारा खोली गई सभी विंडोज़ को बंद कर देता है।

ब्राउज़र बंद करना और छोड़ना Windows

के बीच अंतर को स्पष्ट रूप से दर्शाने के लिए close() और quit()नीचे दिए गए कोड को निष्पादित करने का प्रयास करें। यह एक वेबपेज का उपयोग करता है जो पेज लोड होने पर स्वचालित रूप से एक विंडो पॉप अप करता है और बाहर निकलने के बाद एक और विंडो खोलता है।

ब्राउज़र बंद करना और छोड़ना Windows

ध्यान दें कि केवल मूल ब्राउज़र विंडो बंद थी, दोनों पॉप-अप विंडो बंद नहीं थीं।

ब्राउज़र बंद करना और छोड़ना Windows

लेकिन अगर आप quit() का इस्तेमाल करते हैं, तो सभी विंडो बंद हो जाएँगी - सिर्फ़ पैरेंट विंडो ही नहीं। नीचे दिए गए कोड को चलाने की कोशिश करें और आप देखेंगे कि ऊपर दिए गए दो पॉप-अप भी अपने आप बंद हो जाएँगे।

package newproject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class PG3 {
    public static void main(String[] args) {
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
    	WebDriver driver = new FirefoxDriver();
        driver.get("http://www.popuptest.com/popuptest2.html");
        driver.quit();  // using QUIT all windows will close
    }
}

फ़्रेम के बीच स्विच करना

फ़्रेम में GUI तत्वों तक पहुँचने के लिए, हमें सबसे पहले WebDriver को फ़्रेम या पॉप-अप विंडो पर फ़ोकस करने के लिए निर्देशित करना चाहिए, इससे पहले कि हम उनके भीतर तत्वों तक पहुँच सकें। उदाहरण के लिए, आइए वेब पेज को लें https://demo.guru99.com/selenium/deprecated.html

फ़्रेम के बीच स्विच करना

इस पृष्ठ पर 3 फ़्रेम हैं जिनके “नाम” गुण ऊपर दर्शाए गए हैं। हम ऊपर पीले रंग में घेरे गए “डिप्रेटेड” लिंक तक पहुँचना चाहते हैं। ऐसा करने के लिए, हमें पहले WebDriver को “क्लासफ़्रेम” फ़्रेम पर स्विच करने का निर्देश देना चाहिए “स्विचटू().फ्रेम()” विधि। हम फ्रेम के नाम विशेषता का उपयोग “frame()” भाग के लिए पैरामीटर के रूप में करेंगे।

package newproject;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class PG4 {
	  public static void main(String[] args) {
		  	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");  
		  	WebDriver driver = new FirefoxDriver();
	        driver.get("https://demo.guru99.com/selenium/deprecated.html");
	        driver.switchTo().frame("classFrame");
	        driver.findElement(By.linkText("Deprecated")).click();
	        driver.close(); 
	    }
}

इस कोड को निष्पादित करने के बाद, आप देखेंगे कि “classFrame” फ़्रेम को “Deprecated API” पृष्ठ पर ले जाया गया है, जिसका अर्थ है कि हमारा कोड सफलतापूर्वक “Deprecated” लिंक तक पहुंचने में सक्षम था।

पॉप-अप के बीच स्विच करना Windows

वेबड्राइवर अलर्ट जैसी पॉप-अप विंडो प्रदर्शित करने की अनुमति देता है, इसके विपरीत Selenium आईडीई। अलर्ट के भीतर तत्वों (जैसे कि इसमें मौजूद संदेश) तक पहुँचने के लिए, हमें इसका उपयोग करना होगा "switchTo().alert()" विधि। नीचे दिए गए कोड में, हम अलर्ट बॉक्स तक पहुँचने के लिए इस विधि का उपयोग करेंगे और फिर इसका उपयोग करके इसके संदेश को पुनः प्राप्त करेंगे। "getText()" विधि, और फिर स्वचालित रूप से अलर्ट बॉक्स को बंद करें "switchTo().alert().accept()" विधि.

सबसे पहले, यहाँ जाएँ https://output.jsbin.com/usidix/1 और वहां मैन्युअल रूप से “गो!” बटन पर क्लिक करें और संदेश का टेक्स्ट स्वयं देखें।

पॉप-अप के बीच स्विच करना Windows

देखते हैं Selenium ऐसा करने के लिए उदाहरण कोड-

package mypackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class myclass {

    public static void main(String[] args) {
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        String alertMessage = "";

        driver.get("http://jsbin.com/usidix/1");
        driver.findElement(By.cssSelector("input[value=\"Go!\"]")).click();
        alertMessage = driver.switchTo().alert().getText();
        driver.switchTo().alert().accept();
       
        System.out.println(alertMessage);
        driver.quit();
       
    }
}

पर Eclipse कंसोल पर, ध्यान दें कि मुद्रित चेतावनी संदेश है:

पॉप-अप के बीच स्विच करना Windows

वेट्स

प्रतीक्षा दो प्रकार की होती है।

  1. अंतर्निहित प्रतीक्षा - पूरे कार्यक्रम में डिफ़ॉल्ट प्रतीक्षा समय सेट करने के लिए उपयोग किया जाता है
  2. स्पष्ट प्रतीक्षा - केवल किसी विशेष इंस्टैंस के लिए प्रतीक्षा समय निर्धारित करने के लिए उपयोग किया जाता है

निहित प्रतीक्षा

  • इसे कोड करना एक्सप्रेसिव वेट्स की तुलना में अधिक सरल है।
  • इसे आमतौर पर कोड के इन्स्टेन्शियशन भाग में घोषित किया जाता है।
  • आपको आयात करने के लिए केवल एक अतिरिक्त पैकेज की आवश्यकता होगी।

अंतर्निहित प्रतीक्षा का उपयोग शुरू करने के लिए, आपको इस पैकेज को अपने कोड में आयात करना होगा।

निहित प्रतीक्षा

फिर अपने कोड के इन्स्टेन्शियशन भाग में इसे जोड़ें।

निहित प्रतीक्षा

स्पष्ट प्रतीक्षा

स्पष्ट प्रतीक्षा WebDriverWait और ExpectedCondition वर्गों का उपयोग करके की जाती है.निम्नलिखित के लिए Selenium वेबड्राइवर उदाहरण में, हम अगले कमांड पर आगे बढ़ने से पहले उस तत्व के दिखाई देने के लिए 10 सेकंड तक प्रतीक्षा करेंगे जिसकी आईडी “यूजरनेम” है। यहाँ चरण दिए गए हैं।

चरण १:

इन दो पैकेजों को आयात करें:

स्पष्ट प्रतीक्षा

चरण १:

WebDriverWait वैरिएबल घोषित करें। इस उदाहरण में, हम वैरिएबल के नाम के रूप में “myWaitVar” का उपयोग करेंगे।

स्पष्ट प्रतीक्षा

चरण १:

उन भागों पर ExpectedConditions के साथ myWaitVar का उपयोग करें जहाँ आपको स्पष्ट प्रतीक्षा की आवश्यकता है। इस मामले में, हम “उपयोगकर्ता नाम” पर स्पष्ट प्रतीक्षा का उपयोग करेंगे (Mercury टूर्स होमपेज) इनपुट पर क्लिक करने के बाद ही हम उस पर "ट्यूटोरियल" टेक्स्ट टाइप करेंगे।

स्पष्ट प्रतीक्षा

स्थितियां

सशर्त और लू में निम्नलिखित विधियों का उपयोग किया जाता हैping संचालन —

  • सक्षम है() इसका उपयोग तब किया जाता है जब आप किसी आदेश को निष्पादित करने से पहले यह सत्यापित करना चाहते हैं कि कोई निश्चित तत्व सक्षम है या नहीं।

शर्तें isEnabled()

  • यह प्रदर्शित है() इसका उपयोग तब किया जाता है जब आप किसी आदेश को निष्पादित करने से पहले यह सत्यापित करना चाहते हैं कि कोई निश्चित तत्व प्रदर्शित हुआ है या नहीं।

शर्तें isDisplayed()

  • चयनित है() इसका उपयोग तब किया जाता है जब आप यह सत्यापित करना चाहते हैं कि कोई निश्चित चेक बॉक्स, रेडियो बटन, या ड्रॉप-डाउन बॉक्स में विकल्प चयनित है। यह अन्य तत्वों पर काम नहीं करता है।

शर्तें isSelected()

अपेक्षित शर्तों का उपयोग करना

ExpectedConditions वर्ग शर्तों का एक व्यापक सेट प्रदान करता है जिसका उपयोग आप WebDriverWait की Until() विधि के साथ संयोजन में कर सकते हैं।

नीचे कुछ सबसे सामान्य ExpectedConditions विधियाँ दी गई हैं।

  • अलर्टइज़प्रेजेंट() - अलर्ट बॉक्स प्रदर्शित होने तक प्रतीक्षा करता है।

ExpectedConditions alertIsPresent() का उपयोग करना

  • elementToBeClickable() - तब तक प्रतीक्षा करता है जब तक कोई तत्व दिखाई न दे और साथ ही सक्षम भी हो। नमूना Selenium Code नीचे दिया गया कोड, id="username" वाले एलिमेंट के दिखाई देने और सक्रिय होने तक प्रतीक्षा करेगा, उसके बाद ही उस एलिमेंट को "txtUserName" नामक वेबएलिमेंट वेरिएबल के रूप में असाइन करेगा।

अपेक्षित शर्तों का उपयोग करना

  • फ़्रेम उपलब्ध होना चाहिए और स्विच टू इट () - दिए गए फ्रेम के उपलब्ध होने तक प्रतीक्षा करता है, और फिर स्वचालित रूप से उस पर स्विच हो जाता है।

ExpectedConditions elementToBeClickable() का उपयोग करना

अपवादों को पकड़ना

isEnabled(), isDisplayed(), और isSelected() का उपयोग करते समय, WebDriver यह मान लेता है कि तत्व पहले से ही पृष्ठ पर मौजूद है। अन्यथा, यह एक फेंक देगा कोई ऐसाएलिमेंटएक्सेप्शन नहींइससे बचने के लिए, हमें try-catch ब्लॉक का उपयोग करना चाहिए ताकि प्रोग्राम बाधित न हो।

WebElement txtbox_username = driver.findElement(By.id("username"));
try{
        if(txtbox_username.isEnabled()){
            txtbox_username.sendKeys("tutorial");
        }
    }

catch(NoSuchElementException nsee){
            System.out.println(nsee.toString());
 }

यदि आप स्पष्ट प्रतीक्षा का उपयोग करते हैं, तो आपको जिस प्रकार का अपवाद पकड़ना चाहिए वह "टाइमआउट अपवाद" है।

अपवादों को पकड़ना

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

JDK और एक IDE (जैसे कि...) इंस्टॉल करें। Eclipse या इंटेलिज, Selenium Java लाइब्रेरी और उससे मेल खाने वाले ब्राउज़र ड्राइवर। Maven या जैसे बिल्ड ऑटोमेशन टूल। Gradle निर्भरता प्रबंधन को सरल बनाएं।

एआई स्वचालित रूप से लोकेटरों को ठीक करता है, उपयोगकर्ता कहानियों से परीक्षण मामले उत्पन्न करता है, और अस्थिर परीक्षणों की पहचान करता है। प्लेटफ़ॉर्म जैसे TestimMabl और Applitools बेहतर लेखन, निष्पादन और दृश्य सत्यापन के लिए AI को एम्बेड करते हैं।

हाँ। GitHub Copilot, Cursor, और JetBrains एआई उत्पन्न Java Selenium सरल भाषा में लिखे गए चरणों से बनी स्क्रिप्ट, जिनमें प्रतीक्षा, अभिकथन और पेज ऑब्जेक्ट शामिल हैं। ये नए परीक्षण परिदृश्यों के लिए आवश्यक कोड को काफी हद तक कम कर देती हैं।

findElement पहला मेल खाने वाला WebElement लौटाता है या NoSuchElementException फेंकता है। findElements सभी मेलों की एक सूची लौटाता है और यदि कोई मेल नहीं मिलता है तो एक खाली सूची लौटाता है, कभी भी अपवाद नहीं फेंकता है।

Thread.sleep पेज की स्थिति की परवाह किए बिना एक निश्चित अवधि के लिए रुक जाता है, जिससे तेज़ गति से चलने वाले कार्य धीमे हो जाते हैं और धीमे चलने वाले कार्य विफल हो जाते हैं। केवल आवश्यकतानुसार प्रतीक्षा करने के लिए ExpectedConditions के साथ WebDriverWait का उपयोग करें।

Selenium ChromeDriver और GeckoDriver को सपोर्ट करता है। Firefoxएजड्राइवर, सफारीड्राइवर और आईईड्राइवरसर्वर। Selenium वर्जन 4 में मैनेजर सही ड्राइवर को स्वचालित रूप से डाउनलोड कर लेता है।

ChromeOptions को कॉन्फ़िगर करें या FirefoxOptions ऑब्जेक्ट में setAcceptInsecureCerts(true) विकल्प दिया गया है। यह ब्राउज़र को अमान्य प्रमाणपत्रों को अनदेखा करने के लिए कहता है ताकि WebDriver सत्र जारी रह सके।

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

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