2010-06-26 16 views
8

मेरे पास एक XPath क्वेरी है जिसे एक स्पैन विशेषता में कुछ पाठ मिलान करने की आवश्यकता है, निम्नानुसार:पर्ल और सेलेनियम के साथ मेरी XPath टेक्स्ट क्वेरी में एस्ट्रोफ़े से कैसे बचूं?

my $perl_query = qq(span[text\(\)='It's a problem']); 

$sel->click_ok($perl_query); 

जहां टेक्स्ट में कोई एस्ट्रोफ़े नहीं है, वहां कोई समस्या नहीं है।

मैंने 'यह एक समस्या है' के बजाय निम्नलिखित की कोशिश की है:

'It\'s a problem' 
'It&apos\;s a problem' 
'It\${apos}s a problem' #some thread on Stackoverflow suggested that this was a solution implemented by Selenium, but it doesn't work. 

कोई विचार?

एक अलग नोट पर, यदि मैं इसे हल नहीं कर सकता, तो मुझे 'समस्या' से मेल खाने में काफी खुशी होगी, लेकिन यह सुनिश्चित नहीं है कि सेलेनियम के साथ XPath में रेगेक्स मिलान कैसे करें।

किसी भी पॉइंटर्स

के लिए धन्यवाद

उत्तर

0

के लिए धन्यवाद क्या यह संभव है कि वेब पेज पर वास्तविक पाठ एक घुंघराले उद्धरण और नहीं एक सीधे apostrophe है? साथ ही, आपके पास अवधि की शुरुआत और अंत में अतिरिक्त स्थान हो सकता है, ताकि आपकी स्ट्रिंग के विरुद्ध सख्त समानता मेल नहीं खा सके।

1

कुछ सुझाव; उम्मीद है कि उनमें से कम से कम एक काम करेंगे:

my $perl_query = qq!span[text()='It\\'s a problem']!; 
my $perl_query = qq!span[text()="It's a problem"]!; 
+0

धन्यवाद - लेकिन इनमें से कोई भी काम नहीं करता ... (और यह एक घुंघराले उद्धरण नहीं है)। तो अंत में मैंने सभी अवधि मूल्यों के माध्यम से कब्जा कर लिया और लूप किया, फिर मेरी स्ट्रिंग से मेल खाने के लिए सामान्य पर्ल रेगेक्स का उपयोग किया गया: मेरा $ टेक्स्ट = $ sel-> get_text() # parantheses में तत्व फैलाने के लिए XPath को सम्मिलित करें # रोज़ाना प्रतिलिपि देखने के लिए यह देखने के लिए कि $ टेक्स्ट में "यह एक समस्या है" – CColin

0

यदि संभव हो तो अपने स्ट्रिंग को तोड़ने पर विचार करें:

my $spanValue = q/text()='It's a problem'/; 
my $perlQuery = qq/span[$spanValue]/; 

# $perlQuery = span[text()='It's a problem'] 
2

मुझे बस एक ही समस्या थी और Google ने मुझे एक संतुष्ट समाधान नहीं दिया।

मैं इस सबस्ट्रिंग करने की कोशिश की: मूल्य = ' - एपोस्ट्रोफ़ी के साथ समाप्त।

"substring-after(., concat('value=', ''''))"

तो एक पंक्ति में चार अपॉस्ट्राफी:

मेरे XPath कि काम करता है की तरह लग रहे।

+0

यह मेरे लिए काम नहीं कर रहा है। – Sagar007

0

अच्छी तरह से पोस्ट काफी पुराना है। लेकिन यहां उन लोगों के लिए मेरा कामकाजी जवाब है जो अभी भी एकल एस्ट्रोफ़े से बचने और उचित उत्तर खोजने में असमर्थ होने के आसपास घूमते हुए आते हैं।

Text = It's a problem 

Solution xpath = //div[text()=\"It's a problem\"] 

or 

Solution xpath = //div[contains(text(),\"It's a\")] 
0

एक्सपैथ स्ट्रिंग अक्षर में एस्ट्रोफ़ेस से बचने का समाधान एस्ट्रोफ़े को दोगुना करना है, उदा। qq (अवधि [टेक्स्ट() = 'यह' एक समस्या है '])

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^