लिंक टेक्स्ट और आंशिक लिंक टेक्स्ट Selenium
लिंक टेक्स्ट क्या है? Selenium?
A पाठ लिंक करें Selenium वेब पेज पर हाइपरलिंक की पहचान करने के लिए एंकर टैग का उपयोग किया जाता है। इसे एंकर टैग की मदद से निर्धारित किया जाता है। वेब पेज पर हाइपरलिंक बनाने के लिए, हम लिंक टेक्स्ट के बाद एंकर टैग का उपयोग कर सकते हैं।
मानदंड से मेल खाते लिंक
लिंक को उनके लिंक टेक्स्ट के सटीक या आंशिक मिलान का उपयोग करके एक्सेस किया जा सकता है। नीचे दिए गए उदाहरण ऐसे परिदृश्य प्रदान करते हैं जहाँ कई मिलान मौजूद होंगे और यह समझाएंगे कि वेबड्राइवर उनसे कैसे निपटेगा।
इस ट्यूटोरियल में, हम वेबड्राइवर का उपयोग करके लिंक खोजने और उन तक पहुँचने के लिए उपलब्ध तरीकों के बारे में जानेंगे। साथ ही, हम लिंक तक पहुँचने के दौरान आने वाली कुछ आम समस्याओं पर चर्चा करेंगे और आगे चर्चा करेंगे कि उन्हें कैसे हल किया जाए।
लिंक का पूरा टेक्स्ट Selenium – By.linkText()
लिंक तक उनके सटीक लिंक टेक्स्ट का उपयोग करके पहुंचना By.linkText() विधि के माध्यम से किया जाता है. हालाँकि, अगर दो लिंक हैं जिनका लिंक टेक्स्ट एक जैसा है, तो यह विधि केवल पहले वाले तक ही पहुँच पाएगी। नीचे दिए गए HTML कोड पर विचार करें
जब आप नीचे दिए गए WebDriver कोड को चलाने का प्रयास करेंगे, तो आप पहले “यहाँ क्लिक करें” लिंक पर पहुंचेंगे
कोड:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyClass { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/link.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.linkText("click here")).click(); System.out.println("title of page is: " + driver.getTitle()); driver.quit(); } }
यहाँ दिया गया है कि यह कैसे काम करता है-
परिणामस्वरूप, आपको स्वचालित रूप से Google पर ले जाया जाएगा.
आंशिक लिंक पाठ को पूर्ण करें Selenium – आंशिक लिंक टेक्स्ट () द्वारा
लिंक टेक्स्ट के एक हिस्से का उपयोग करके लिंक तक पहुंचने का कार्य किया जाता है आंशिक लिंक टेक्स्ट () द्वारा विधि। यदि आप आंशिक लिंक टेक्स्ट निर्दिष्ट करते हैं जिसमें कई मिलान हैं, तो केवल पहला मिलान ही एक्सेस किया जाएगा। नीचे दिए गए HTML कोड पर विचार करें।
जब आप नीचे दिए गए WebDriver कोड को निष्पादित करेंगे, तब भी आपको Google पर ले जाया जाएगा.
कोड:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class P1 { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/accessing-link.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.partialLinkText("here")).click(); System.out.println("Title of page is: " + driver.getTitle()); driver.quit(); } }
एक ही लिंक टेक्स्ट के साथ एकाधिक लिंक कैसे प्राप्त करें
तो, उपरोक्त समस्या से कैसे निपटा जाए? ऐसे मामलों में जहाँ एक ही लिंक टेक्स्ट वाले कई लिंक हैं, और हम पहले लिंक के अलावा अन्य लिंक तक पहुँचना चाहते हैं, तो हम ऐसा कैसे कर सकते हैं?
ऐसे मामलों में, आम तौर पर, अलग-अलग लोकेटर जैसे… By.xpath(), By.cssSelector() या By.tagName() का उपयोग किया जाता है।
सबसे ज़्यादा इस्तेमाल किया जाने वाला तरीका है By.xpath()। यह सबसे ज़्यादा विश्वसनीय है, लेकिन यह जटिल और पढ़ने में भी मुश्किल लगता है।
लिंक टेक्स्ट के लिए केस-सेंसिटिविटी
के लिए पैरामीटर लिंकटेक्स्ट() द्वारा और आंशिक लिंक टेक्स्ट () द्वारा दोनों ही केस-सेंसिटिव हैं, जिसका मतलब है कि कैपिटलाइज़ेशन मायने रखता है। उदाहरण के लिए, Mercury टूर्स के होमपेज पर, दो लिंक हैं जिनमें "एगिस" टेक्स्ट है - एक "रजिस्टर" लिंक है जो शीर्ष मेनू पर है, और दूसरा "यहां रजिस्टर करें" लिंक है जो पृष्ठ के निचले दाहिने हिस्से में है।
हालाँकि दोनों लिंक में वर्ण अनुक्रम “egis” है, लेकिन एक “By.partialLinkText()” विधि वर्णों के कैपिटलाइज़ेशन के आधार पर इन दोनों लिंक को अलग-अलग एक्सेस करेगी। नीचे नमूना कोड देखें।
कोड
public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/newtours/"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); String theLinkText = driver.findElement(By .partialLinkText("egis")) .getText(); System.out.println(theLinkText); theLinkText = driver.findElement(By .partialLinkText("EGIS")) .getText(); System.out.println(theLinkText); driver.quit(); }
ब्लॉक के बाहर और अंदर के लिंक
नवीनतम HTML5 मानक टैग को ब्लॉक-स्तरीय टैग जैसे , , या के अंदर और बाहर रखने की अनुमति देता है । “By.linkText()” और “By.partialLinkText()” विधियाँ इन ब्लॉक-स्तरीय तत्वों के बाहर और अंदर स्थित लिंक तक पहुँच सकती हैं। नीचे दिए गए HTML कोड पर विचार करें।
नीचे दिया गया WebDriver कोड By.partialLinkText() विधि का उपयोग करके इन दोनों लिंक तक पहुँचता है।
कोड:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyClass { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/block.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.partialLinkText("Inside")).click(); System.out.println(driver.getTitle()); driver.navigate().back(); driver.findElement(By.partialLinkText("Outside")).click(); System.out.println(driver.getTitle()); driver.quit(); } }
उपरोक्त आउटपुट से यह पुष्टि होती है कि दोनों लिंक तक सफलतापूर्वक पहुंचा गया क्योंकि उनके संबंधित पृष्ठ शीर्षक सही ढंग से प्राप्त किए गए थे।
सारांश
- लिंक तक पहुँचने के लिए click() विधि का उपयोग किया जाता है।
- किसी भी वेबएलिमेंट के लिए उपलब्ध लोकेटर के अलावा, लिंक में लिंक टेक्स्ट आधारित लोकेटर भी होते हैं:
- लिंकटेक्स्ट() द्वारा - पैरामीटर के रूप में दिए गए लिंक के पाठ के सटीक मिलान के आधार पर लिंक का पता लगाता है।
- आंशिक लिंक टेक्स्ट () द्वारा - लिंक के पाठ के आंशिक पाठ मिलान के आधार पर लिंक का पता लगाता है।
- उपरोक्त दोनों लोकेटर केस सेंसिटिव हैं।
- यदि कई मिलान हैं, तो By.linkText() और By.partialLinkText() केवल पहले मिलान का चयन करेंगे। ऐसे मामलों में जहां एक ही लिंक टेक्स्ट वाले कई लिंक मौजूद हैं, xpath, CSS पर आधारित अन्य लोकेटर का उपयोग किया जाता है।
- findElements() और By.tagName(“a”) विधि पृष्ठ में लोकेटर मानदंड से मेल खाने वाले सभी तत्वों को ढूंढती है
- लिंक तक By.linkText() और By.partialLinkText() द्वारा पहुंचा जा सकता है, चाहे वे ब्लॉक-स्तरीय तत्वों के अंदर हों या बाहर।