मेरे वेबपेज में, नाम के div
साथ है ।class
Test
मैं इसे कैसे पा सकता हूं XPath
?
मेरे वेबपेज में, नाम के div
साथ है ।class
Test
मैं इसे कैसे पा सकता हूं XPath
?
जवाबों:
यह चयनकर्ता काम करना चाहिए, लेकिन यदि आप इसे अपने अनुकूल मार्कअप के साथ बदलते हैं तो यह अधिक कुशल होगा:
//*[contains(@class, 'Test')]
या, जब से हम जानते हैं कि मांगी गई तत्व एक है div
:
//div[contains(@class, 'Test')]
लेकिन चूंकि यह class="Testvalue"
या तो जैसे मामलों से मेल खाएगा या class="newTest"
, @ तोमालक का संस्करण टिप्पणी में बेहतर है :
//div[contains(concat(' ', @class, ' '), ' Test ')]
यदि आप वास्तव में निश्चित होना चाहते हैं कि यह सही ढंग से मेल खाएगा, तो आप क्लास नाम के अनुसार आवारा व्हाट्सएप पात्रों को साफ करने के लिए सामान्य-स्थान फ़ंक्शन का उपयोग भी कर सकते हैं (जैसा कि @Terry द्वारा उल्लेख किया गया है):
//div[contains(concat(' ', normalize-space(@class), ' '), ' Test ')]
ध्यान दें कि इन सभी संस्करणों में, * सबसे अच्छा होना चाहिए कि जिस भी तत्व का नाम आप वास्तव में मिलान करना चाहते हैं, जब तक आप दस्तावेज़ में प्रत्येक और प्रत्येक तत्व को दी गई स्थिति के लिए खोज नहीं करना चाहते।
//div[contains(concat(' ', @class, ' '), ' Test ')]
- आपके आंशिक मैचों को भी चालू करेगा।
सबसे आसान तरीका ।।
//div[@class="Test"]
मान लें कि आप <div class="Test">
वर्णित के रूप में खोजना चाहते हैं ।
//
न केवल उपयोग करता है /
।
XPath के साथ करने का एकमात्र सही तरीका:
//div[contains(concat(" ", normalize-space(@class), " "), " Test ")]
फ़ंक्शन normalize-space
व्हाट्सएप को लीड करता है और अनुगामी करता है, और एक सिंगल स्पेस द्वारा व्हॉट्सएप के पात्रों के अनुक्रम को भी बदलता है।
यदि इन Xpath प्रश्नों में से कई की आवश्यकता नहीं है, तो आप एक पुस्तकालय का उपयोग करना चाह सकते हैं जो CSS चयनकर्ताओं को XPath में परिवर्तित करता है, क्योंकि CSS चयनकर्ता आमतौर पर XPath प्रश्नों की तुलना में पढ़ने और लिखने दोनों के लिए बहुत आसान होते हैं। उदाहरण के लिए, इस मामले में, आप दोनों का उपयोग कर सकते हैं div[class~="Test"]
और div.Test
समान परिणाम प्राप्त कर सकते हैं ।
कुछ पुस्तकालय जो मैं पा सका हूँ:
मैं इसे केवल एक उत्तर के रूप में प्रदान कर रहा हूं, जैसा कि टॉमालक ने बहुत समय पहले पदक के उत्तर के लिए एक टिप्पणी के रूप में प्रदान किया था
//div[contains(concat(' ', @class, ' '), ' Test ')]
concat(' ', normalize-space(@class), ' ')
साथ ही साथ सभी प्रकार के श्वेत-अंतरिक्ष वर्णों के लिए क्या करना है?
//div[contains(concat(' ', @class, ' '), ' Test ')]/chid
बच्चों का चयन क्यों नहीं किया जाता है?
पिछले उत्तर से एक उपयोगी कार्य किया जा सकता है:
function matchClass($className) {
return "[contains(concat(' ', normalize-space(@class), ' '), ' $className ')]";
}
फिर बस फ़ंक्शन को अपने प्रश्न में कॉल करें।
आप इस उदाहरण जैसे तत्व पा सकते हैं (सभी सीएसएस तत्व)
private By
allElementsCss = By.xpath(".//div[@class]");