लिंक पाठ द्वारा तत्वों का पता लगाएँ & सेलेनियम वेबड्राइवर में आंशिक लिंक पाठ

विषय - सूची:

Anonim

सेलेनियम में लिंक पाठ क्या है?

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

कड़ियाँ मिलान एक मानदंड

लिंक को उनके लिंक टेक्स्ट के सटीक या आंशिक मिलान का उपयोग करके एक्सेस किया जा सकता है। नीचे दिए गए उदाहरण ऐसे परिदृश्य प्रदान करते हैं जहां कई मैच मौजूद होंगे और यह बताएंगे कि वेबड्राइवर उनसे कैसे निपटेंगे।

इस ट्यूटोरियल में, हम वेबड्राइवर का उपयोग करके लिंक को खोजने और उस तक पहुंचने के लिए उपलब्ध तरीकों को जानेंगे। साथ ही, हम लिंक तक पहुँचने के दौरान सामने आने वाली कुछ सामान्य समस्याओं पर चर्चा करेंगे और उन्हें हल करने के तरीके के बारे में आगे चर्चा करेंगे।

यहाँ आप जानेंगे-

  • सटीक पाठ मिलान का उपयोग करके लिंक एक्सेस करना: By.linkText ()
  • आंशिक पाठ मिलान का उपयोग करके लिंक एक्सेस करना: By.partialLinkText ()
  • एक ही लिंक टेक्स्ट के साथ कई लिंक कैसे प्राप्त करें
  • लिंक टेक्स्ट के लिए केस-सेंसिटिविटी
  • लिंक बाहर और एक ब्लॉक के अंदर

सटीक पाठ मिलान का उपयोग करके लिंक एक्सेस करना: By.linkText ()

उनके सटीक लिंक पाठ का उपयोग करके लिंक को एक्सेस करना By.linkText () विधि द्वारा किया जाता है । हालाँकि, अगर दो लिंक हैं जिनमें एक ही लिंक टेक्स्ट है, तो यह विधि केवल पहले वाले को एक्सेस करेगी। नीचे दिए गए HTML कोड पर विचार करें

जब आप नीचे दिए गए WebDriver कोड को चलाने का प्रयास करते हैं, तो आप पहले "यहां क्लिक करें" लिंक पर पहुंचेंगे

कोड:

आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.chrome.ChromeDriver;सार्वजनिक वर्ग MyClass {सार्वजनिक स्थैतिक शून्य main (String [] args) {स्ट्रिंग आधार = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();Driver.get (baseUrl);Driver.findElement (By.linkText ("यहां क्लिक करें"))। क्लिक करें ();System.out.println ("पृष्ठ का शीर्षक है: + driver.getTitle ());Driver.quit ();}}

यहाँ दिया गया है कि यह कैसे काम करता है-

परिणामस्वरूप, आपको स्वचालित रूप से Google पर ले जाया जाएगा।

आंशिक पाठ मिलान का उपयोग करके लिंक एक्सेस करना: By.partialLinkText ()

उनके लिंक टेक्स्ट के एक हिस्से का उपयोग करके लिंक तक पहुँच करना By.partialLinkText () विधि का उपयोग करके किया जाता है । यदि आप एक आंशिक लिंक पाठ निर्दिष्ट करते हैं जिसमें कई मैच हैं, तो केवल पहला मैच एक्सेस किया जाएगा। नीचे दिए गए HTML कोड पर विचार करें।

जब आप नीचे दिए गए WebDriver कोड को निष्पादित करते हैं, तब भी आपको Google पर ले जाया जाएगा।

कोड:

आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.chrome.ChromeDriver;सार्वजनिक वर्ग P1 {सार्वजनिक स्थैतिक शून्य main (String [] args) {स्ट्रिंग आधार = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();Driver.get (baseUrl);Driver.findElement (By.partialLinkText ("here"))। क्लिक करें ();System.out.println ("पृष्ठ का शीर्षक है: + driver.getTitle ());Driver.quit ();}}

एक ही लिंक टेक्स्ट के साथ कई लिंक कैसे प्राप्त करें

तो, उपरोक्त समस्या को कैसे हल करें? ऐसे मामलों में जहां एक ही लिंक टेक्स्ट के साथ कई लिंक हैं, और हम पहले वाले के अलावा अन्य लिंक को एक्सेस करना चाहते हैं, हम इसके बारे में कैसे जाने?

ऐसे मामलों में, आम तौर पर, अलग-अलग लोकेटर अर्थात ... बाय.पाथ (), बाय.सैसलेक्टर () या बायटैगनेम () का उपयोग किया जाता है।

सबसे अधिक इस्तेमाल किया जाता है By.xpath ()। यह सबसे विश्वसनीय है, लेकिन यह जटिल और गैर-पठनीय भी दिखता है।

लिंक टेक्स्ट के लिए केस-सेंसिटिविटी

By.linkText () और By.partialLinkText () दोनों पैरामीटर केस-सेंसिटिव हैं, जिसका अर्थ है कि कैपिटलाइज़ेशन मायने रखता है। उदाहरण के लिए, मर्करी टूर्स के होमपेज में, दो लिंक होते हैं जिनमें "एगिस" टेक्स्ट होता है - एक शीर्ष मेनू में पाया जाने वाला "रेजिस्टर" लिंक होता है, और दूसरा "रजिस्टर यहाँ है" लिंक निचले दाएं हिस्से में पाया जाता है। पृष्ठ का।

यद्यपि दोनों लिंक में वर्ण अनुक्रम "एगिस" है, लेकिन एक "बाय.पार्टियललिंकटेक्स्ट ()" विधि है, पात्रों के पूंजीकरण के आधार पर इन दोनों लिंक को अलग से एक्सेस करेगा। नीचे नमूना कोड देखें।

कोड

सार्वजनिक स्थैतिक शून्य main (String [] args) {स्ट्रिंग आधार = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();Driver.get (baseUrl);स्ट्रिंग.partialLinkText ("एगिस")).getText ();System.out.println (theLinkText);theLinkText = driver.findElement (बाय.partialLinkText ("EGIS")).getText ();System.out.println (theLinkText);Driver.quit ();}

लिंक बाहर और एक ब्लॉक के अंदर

नवीनतम HTML5 मानक

,

, या

जैसे ब्लॉक-स्तरीय टैग के अंदर और बाहर रखा जा सकता है। "By.linkText ()" और "By.partialLinkText ()" विधियाँ इन ब्लॉक-स्तरीय तत्वों के बाहर और अंदर स्थित लिंक तक पहुँच सकती हैं। नीचे दिए गए HTML कोड पर विचार करें।

नीचे दिया गया WebDriver कोड By.partialLinkText () विधि का उपयोग करके इन दोनों लिंक तक पहुँचता है।

कोड:

आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.chrome.ChromeDriver;सार्वजनिक वर्ग MyClass {सार्वजनिक स्थैतिक शून्य main (String [] args) {स्ट्रिंग आधार = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();Driver.get (baseUrl);Driver.findElement (By.partialLinkText ("इनसाइड"))। क्लिक करें ();System.out.println (driver.getTitle ());Driver.navigate ()) वापस ();Driver.findElement (By.partialLinkText ("आउटसाइड"))। क्लिक करें ();System.out.println (driver.getTitle ());Driver.quit ();}}

ऊपर दिए गए आउटपुट से पुष्टि होती है कि दोनों लिंक सफलतापूर्वक एक्सेस किए गए थे क्योंकि उनके संबंधित पृष्ठ शीर्षक सही ढंग से प्राप्त किए गए थे।

सारांश

  • लिंक पर क्लिक () विधि का उपयोग करके पहुँचा जाता है।
  • किसी भी WebElement के लिए उपलब्ध लोकेटर के अलावा, लिंक में लिंक टेक्स्ट आधारित लोकेटर भी होते हैं:
    • By.linkText () - लिंक के टेक्स्ट के सटीक मिलान के आधार पर लिंक को एक पैरामीटर के रूप में प्रदान करता है।
    • By.partialLinkText () - लिंक के टेक्स्ट के आंशिक पाठ मिलान के आधार पर लिंक का पता लगाता है।
  • उपरोक्त दोनों लोकेटर केस सेंसिटिव हैं।
  • यदि कई मैच हैं, तो By.linkText () और By.partialLinkText () केवल पहले मैच का चयन करेंगे। ऐसे मामलों में जहां एक ही लिंक टेक्स्ट के साथ कई लिंक मौजूद हैं, xpath, CSS के आधार पर अन्य लोकेटर का उपयोग किया जाता है।
  • findElements () & By.tagName ("a") विधि लोकेटर मानदंड से मेल खाते पृष्ठ के सभी तत्वों को ढूंढती है
  • लिंक को By.linkText () और By.partialLinkText () द्वारा एक्सेस किया जा सकता है, चाहे वे ब्लॉक-स्तरीय तत्वों के अंदर हों या बाहर।