सेलेनियम वेबड्राइवर में AJAX कॉल कैसे हैंडल करें

विषय - सूची:

Anonim

अजाक्स क्या है?

AJAX अतुल्यकालिक जावास्क्रिप्ट और XML के लिए खड़ा है , और यह पूरे पृष्ठ को पुनः लोड किए बिना वेब पेज को सर्वर से छोटी मात्रा में डेटा पुनर्प्राप्त करने की अनुमति देता है।

अजाक्स एक तकनीक है जिसका उपयोग तेज और गतिशील वेब पेज बनाने के लिए किया जाता है। यह तकनीक अतुल्यकालिक है और जावास्क्रिप्ट और एक्सएमएल के संयोजन का उपयोग करती है।

यह पूरे पृष्ठ को फिर से लोड किए बिना वेब पेज के भाग / अपडेट को अपडेट करेगा।

AJAX तकनीक का उपयोग करने वाले कुछ प्रसिद्ध एप्लिकेशन जीमेल, गूगल मैप्स, फेसबुक, यूट्यूब, आदि हैं।

इस ट्यूटोरियल में, आप सीखेंगे-

  • अजाक्स क्या है?
  • अजाक्स कैसे काम करता है?
  • सेलेनियम वेबड्राइवर का उपयोग करके अजाक्स कॉल को कैसे संभालना है
  • सेलेनियम वेबड्राइवर में अजाक्स कॉल को संभालने में चुनौतियां

अजाक्स कैसे काम करता है?

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

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

एक परीक्षक के दृष्टिकोण से, यदि आप प्रदर्शित होने वाली सामग्री या तत्व की जांच कर रहे हैं, तो आपको प्रतिक्रिया मिलने तक प्रतीक्षा करने की आवश्यकता है। AJAX कॉल के दौरान डेटा को XML प्रारूप में संग्रहीत किया जाता है और सर्वर से पुनर्प्राप्त किया जाता है।

सेलेनियम वेबड्राइवर का उपयोग करके अजाक्स कॉल को कैसे संभालना है

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

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

सेलेनियम वेबड्राइवर का उपयोग करने के लिए प्रतीक्षा विधियां निम्नलिखित हैं

  1. धागा। सो ()
  • Thread.Sleep () एक बुद्धिमान पसंद नहीं है क्योंकि यह निर्दिष्ट समय के लिए वर्तमान थ्रेड को निलंबित करता है।
  • AJAX में, आप सटीक प्रतीक्षा समय के बारे में निश्चित नहीं हो सकते। तो, यदि आपका तत्व प्रतीक्षा समय के भीतर दिखाई नहीं देगा तो आपका परीक्षण विफल हो जाएगा। इसके अलावा, यह ओवरहेड को बढ़ाता है क्योंकि थ्रेड.स्लीप (t) को कॉल करने से वर्तमान थ्रेड को चल रही कतार से प्रतीक्षा कतार में ले जाया जाता है।
  • समय 'टी' पहुंचने के बाद, वर्तमान धागा प्रतीक्षा कतार से तैयार कतार में चला जाएगा, और फिर सीपीयू द्वारा उठाए जाने और चलने में कुछ समय लगेगा।
  1. निहित प्रतीक्षा ()
  • यह विधि वेबड्राइवर को यह बताने के लिए प्रतीक्षा करती है कि तत्व तुरंत उपलब्ध नहीं है, लेकिन यह प्रतीक्षा पूरे समय के लिए होगी कि ब्राउज़र खुला है। इसलिए पृष्ठ पर मौजूद तत्वों की कोई भी खोज उस समय को ले सकती है जिसमें निहित प्रतीक्षा निर्धारित है।
  1. स्पष्ट प्रतीक्षा ()
  • स्पष्ट प्रतीक्षा का उपयोग परीक्षण निष्पादन को तब तक करने के लिए किया जाता है जब तक कि किसी विशेष स्थिति के पूरा होने या अधिकतम समय के अंतराल तक न हो।
  1. वेबड्राइवरवेट
  • यह किसी भी स्थिति के लिए इस्तेमाल किया जा सकता है। यह WebDriverWait के साथ ExpectedCondition के संयोजन में प्राप्त किया जा सकता है
  • किसी तत्व की गतिशील रूप से प्रतीक्षा करने का सबसे अच्छा तरीका यह है कि वह हर सेकंड स्थिति की जाँच कर रहा है और जैसे ही शर्त पूरी होती है, स्क्रिप्ट में अगले कमांड को जारी रखता है।

लेकिन इन सभी इंतजारों के साथ समस्या यह है कि आपको टाइम आउट यूनिट का उल्लेख करना होगा। क्या होगा यदि तत्व अभी भी समय के भीतर मौजूद नहीं है? इसलिए एक और प्रतीक्षा है जिसे फ्लुएंट प्रतीक्षा कहा जाता है।

  1. धाराप्रवाह प्रतीक्षा
  • यह प्रतीक्षा समय और मतदान के अंतराल वाले प्रतीक्षा इंटरफ़ेस का कार्यान्वयन है। प्रत्येक फ्लुएंटविट उदाहरण एक शर्त के लिए प्रतीक्षा करने के लिए अधिकतम समय निर्धारित करता है, साथ ही आवृत्ति जिसके साथ स्थिति की जांच करना है।

सेलेनियम वेबड्राइवर में अजाक्स कॉल को संभालने में चुनौतियां

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

अजाक्स हैंडलिंग के लिए एक उदाहरण

आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.WebElement;आयात org.openqa.selenium.chrome.ChromeDriver;आयात org.openqa.selenium.support.ui.ExpectedConditions;आयात org.openqa.selenium.support.ui.ebDriverWait;आयात org.testng.Assert;आयात org.testng.annotations.BeforeClass;आयात org.testng.annotations.Test;सार्वजनिक वर्ग अजाक्सडेमो {निजी स्ट्रिंग URL = "http://demo.guru99.com/test/ajax.html";WebDriver ड्राइवर;WebDriverWait प्रतीक्षा करें;@कक्षा से पहलेसार्वजनिक शून्य सेटअप () {System.setProperty ("webdriver.chrome.driver", "। \\ chromedriver.exe");// क्रोम उदाहरण बनाएँड्राइवर = नया क्रोमड्राइवर ();Driver.manage ()। window ()। मैक्सिमम ();Driver.navigate ()। to (URL);}@परीक्षासार्वजनिक शून्य परीक्षणकंटेनर द्वारा = By.cssSelector ("कंटेनर");प्रतीक्षा करें = नया WebDriverWait (ड्राइवर, 5);Wait.until (ExpectedConditions.presenceOfElementLocated (कंटेनर));// अजाक्स कॉल करने से पहले पाठ प्राप्त करेंWebElement noTextElement = driver.findElement (By.className ("radiobutton"));स्ट्रिंग textBefore = noTextElement.getText ()। Trim ();// रेडियो बटन पर क्लिक करेंDriver.findElement (By.id ("हाँ"))। क्लिक करें ();// चेक बटन पर क्लिक करेंDriver.findElement (By.id ("buttoncheck"))। क्लिक करें ();/ * अजाक्स कॉल के बाद टेक्स्ट प्राप्त करें * /WebElement TextElement = driver.findElement (By.className ("radiobutton"));Wait.until (ExpectedConditions.visibilityOf (TextElement));स्ट्रिंग textAfter = TextElement.getText ()। Trim ();/ * अजाक्स कॉल से पहले और अजाक्स कॉल पाठ के बाद दोनों पाठ सत्यापित करें। * /Assert.assertNotEquals (textBefore, textAfter);System.out.println ("Ajax Call Performed");स्ट्रिंग प्रत्याशित = "रेडियो बटन की जाँच की जाती है और यह मान है हाँ";/ * अजाक्स कॉल के बाद अद्यतन पाठ के साथ अपेक्षित पाठ सत्यापित करें * /Assert.assertEquals (पाठ के बाद, अपेक्षित);Driver.close ();}}

सारांश:

  • AJAX पूरे पृष्ठ को पुनः लोड किए बिना वेब पेज को सर्वर से छोटी मात्रा में डेटा पुनर्प्राप्त करने की अनुमति देता है।
  • अजाक्स एप्लिकेशन का परीक्षण करने के लिए, विभिन्न प्रतीक्षा विधियों को लागू किया जाना चाहिए
    • थ्रेडस्लीप
    • निहित प्रतीक्षा करें
    • स्पष्ट प्रतीक्षा करें
    • वेबड्राइवरवेट
    • धाराप्रवाह प्रतीक्षा
  • स्वचालित परीक्षण अनुरोध बनाना उपकरण परीक्षण के लिए कठिन हो सकता है क्योंकि इस तरह के AJAX एप्लिकेशन अक्सर POST डेटा जमा करने के लिए विभिन्न एन्कोडिंग या क्रमांकन तकनीक का उपयोग करते हैं।