2012-12-14 18 views
79

में तत्व की सटीक मिलान का पाठ मैं HTML में दो तत्वों निम्नलिखित है द्वारा एक तत्व को खोजने के लिए कैसेCapybara

<a href="/berlin" >Berlin</a> 
<a href="/berlin" >Berlin Germany </a> 

मैं Capybara विधि

find("a", :text => "berlin") 

निम्नलिखित का उपयोग करके तत्व को खोजने के लिए कोशिश कर रहा हूँ उपरोक्त दो तत्व लौटाएंगे क्योंकि दोनों में टेक्स्ट बर्लिन है।

क्या कैपिबारा में सटीक पाठ से मिलान करने का कोई तरीका है?

+0

कैपिबरा या नोकोगिरी का उपयोग करना होगा? यह दोनों को टैग क्यों किया जाता है? – pguardiario

उत्तर

114

:text कुंजी के मूल्य के लिए एक स्ट्रिंग के बजाय एक regexp का उपयोग करें:

find("a", :text => /\ABerlin\z/) 

चेक बाहर Method: Capybara::Node::Finders#alldocumentation की 'विकल्प हैश' अनुभाग।

पीएस: टेक्स्ट मैचों केस संवेदनशील हैं। आपका उदाहरण कोड वास्तव में एक त्रुटि को जन्म देती है:

find("a", :text => "berlin") 
# => Capybara::ElementNotFound: 
# Unable to find css "a" with text "berlin" 
+7

यह भयानक है कि यह सबसे अच्छा जवाब है। : रोना: – BM5k

+0

हमारे पास बर्लिन के बीच \ A और \ z क्यों है? –

+0

@ करन वर्मा: http://stackoverflow.com/a/5979643/1004889 – pje

35

निर्भर करता है मणि का कौन सा संस्करण पर प्रयोग कर रहे हैं

find('a', text: 'Berlin', exact: true) 

पदावनत किया जा सकता है। इस मामले में आपको

find('a', text: 'Berlin', match: :prefer_exact) 
संबंधित मुद्दे