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


102

मेरे पास HTML में दो तत्व हैं

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

मैं Capybara विधि का उपयोग करके तत्व को खोजने की कोशिश कर रहा हूं

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

ऊपर दो तत्व वापस आएंगे क्योंकि दोनों में टेक्स्ट बर्कलिन है।

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


कैपीबारा या नोकोगिरी? यह दोनों को क्यों टैग किया गया है?
पेंडियारियो

जवाबों:



139

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

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

Method: Capybara::Node::Finders#all प्रलेखन के 'विकल्प हैश' अनुभाग देखें ।

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

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

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

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

1
मैं regex में एक प्लेसहोल्डर कैसे जोड़ सकता हूं
FluffyBeing

इसे लिखकर संभाला जा सकता थाclick_link(link_text, :text => link_text)
याद रखें कि आपने

52

मणि के किस संस्करण के आधार पर आप उपयोग कर रहे हैं

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

पदावनत किया जा सकता है। जिस स्थिति में आपको उपयोग करना होगा

find('a', text: 'Berlin', match: :prefer_exact)

4

मेरी प्राथमिकता के have_selectorसाथ उपयोग करना है textऔर exact_text: true:

expect(body).to have_selector 'a', text: 'Berlin', exact_text: true

4

आप भी ऐसा कर सकते हैं:

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

कि सीएसएस के लिए मिल जाएगा।

और केवल के exact: trueबजाय का उपयोग कर exact_textआप एक संदेश है कि exactविकल्प केवल XPATH के लिए मान्य है दिखाएगा।


2
या इससे भी अधिक, आप उपयोग कर सकते हैंfind("a", exact_text: "berlin")
कुकुनिन

0

Capybara में click_link का उपयोग करने के लिए आपको इसका उपयोग करने की विधि में एक और गुण जोड़ना होगा।

click_link(link_name, :text => link_name)

यहाँ link_name किसी लिंक का टेक्स्ट मान है। उपयोग करना : टेक्स्ट कीवर्ड हम निर्दिष्ट कर रहे हैं कि हम टेक्स्ट वैल्यू वाले लिंक पर क्लिक करना चाहते हैं जो हमारी आवश्यकता के अनुरूप हो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.