मैंने विकिपीडिया पृष्ठ पर स्क्रीन पर देखे जा सकने वाले पाठ के आधार पर एक तत्व खोजने की कोशिश की। अब, सबसे पहले मैंने बिना किसी परिणाम के driver.findElement(By.LinkText("English")); की कोशिश की। लेकिन फिर मैंने इसके बजाय driver.findElement(By.partialLinkText("English")); के साथ नीचे दिए गए कोड की कोशिश की और यह काम कर गया। क्या कोई मुझे उस विकिपीडिया पृष्ठ के आधार पर समझा सकता है, ऐसा क्यों है? क्योंकि उदाहरण वास्तव में सरल है और मुझे नहीं पता कि driver.findElement(By.LinkText("English")); क्यों काम नहीं करता है?

driver.get("http://www.wikipedia.org");
WebElement link;
link = driver.findElement(By.partialLinkText("English"));
link.click();
1
Suppe 16 सितंबर 2017, 22:07

4 जवाब

सबसे बढ़िया उत्तर

नाम से सब कुछ पता चलता है।
LinkText: यह दिए गए टेक्स्ट के सटीक मिलान वाले तत्व लौटाता है
PartialLinkText दिए गए टेक्स्ट को शामिल करने वाले तत्वों को लौटाता है

मैंने http://www.wikipedia.org देखा है और मैंने देखा कि लिंक में अन्य टेक्स्ट तत्व भी शामिल हैं :

<a ... > 
   <strong>English</strong> 
   <small>
      <bdi dir="ltr">5&nbsp;472&nbsp;000+</bdi>
      <span>articles</span>
   </small>
</a>

इसलिए इसे टेक्स्ट नहीं मिलेगा क्योंकि यह केवल "अंग्रेज़ी" की अपेक्षा करता है

4
Koen Meijer 17 सितंबर 2017, 14:23
कोई स्थान या अन्य वर्ण शामिल नहीं है?
 – 
Koen Meijer
16 सितंबर 2017, 22:16
अच्छा सवाल, जब मैं फायरबग के साथ तत्व का निरीक्षण करता हूं, तो यह कहता है <strong>English</strong>। तो मुझे लगता है कि कोई स्थान या अन्य चरित्र नहीं हैं
 – 
Suppe
16 सितंबर 2017, 22:18
परीक्षण के लिए आप किस ब्राउज़र का उपयोग कर रहे हैं?
 – 
Koen Meijer
16 सितंबर 2017, 22:28
ब्राउज़र फ़ायरफ़ॉक्स है
 – 
Suppe
16 सितंबर 2017, 22:30
मैंने पृष्ठ को देखा है और मैंने देखा है कि लिंक में अन्य पाठ भी शामिल हैं: अंग्रेज़ी 5 472 000+ लेख span> इसलिए इसे टेक्स्ट नहीं मिलेगा क्योंकि यह केवल अंग्रेजी की अपेक्षा करता है।
 – 
Koen Meijer
16 सितंबर 2017, 22:34

By.LinkText: - इसके अंदर मौजूद सटीक टेक्स्ट की खोज करें।

By.partialLinkText:- इसके अंदर मौजूद समान टेक्स्ट को खोजें।

1
Ankur Singh 16 सितंबर 2017, 22:11
हाँ, लेकिन "अंग्रेजी" सटीक पाठ है और यह काम नहीं किया!
 – 
Suppe
16 सितंबर 2017, 22:12

आप इसके बजाय सिर्फ आईडी का इस्तेमाल कर सकते थे। अगर कोई आईडी मौजूद है तो मैं लगभग हमेशा किसी और चीज पर इसका इस्तेमाल करता हूं।

link = driver.FindElement(By.Id("js-link-box-en"));
1
Wai Ha Lee 28 फरवरी 2019, 20:31

अंग्रेजी उस टैग में टेक्स्ट वैल्यू का एक हिस्सा है। जैसा कि DOM संरचना में दिखाया गया है, पूरा लिंक टेक्स्ट 2 आंतरिक टैगों में टूट रहा है,

<small>
      <bdi dir="ltr">5&nbsp;472&nbsp;000+</bdi>
      <span>articles</span>
</small>

UI में: "अंग्रेज़ी 5876000+ लेख"

जिसे मैंने बेहतर ढंग से समझने के लिए संलग्न छवि में दिखाया है

0
user12485778 5 पद 2019, 15:44