2012-10-12 13 views
9

भी है, मेरे पास एक ऐप है जो तालिका कक्षों में अद्वितीय आईडी निर्दिष्ट नहीं करता है। कॉलम 1 में अद्वितीय टेक्स्ट दिया गया है, कॉलम 2 में एक लिंक प्रबंधित करें, और कॉलम 3 में एक डिलीट लिंक, मैं कैपिबारा को उसी पंक्ति में लिंक प्रबंधित करने के लिए कैसे कहूं जिसमें टेक्स्ट 'फू' है?रेल/कैपिबारा: तालिका पंक्ति में किसी लिंक पर क्लिक करने के लिए जिसमें अद्वितीय टेक्स्ट

Foo manage delete 
Bar manage delete 

मैं find('tr', text: "Foo") उपयोग करने के लिए कैसे जब एक .should खंड के साथ इस्तेमाल किया देखते हैं। और मैं देखता हूं कि 'प्रबंधन' टेक्स्ट वाले लिंक पर क्लिक कैसे करें। लेकिन मैं नहीं देखता कि उन्हें एक पंक्ति को कैसे गठबंधन करना है, और उस पंक्ति के भीतर, एक लिंक पर क्लिक करें।

उत्तर

14

मैं इस परीक्षण किया है और यह काम करना चाहिए:

find(:xpath, "//tr[td[contains(.,'Foo')]]/td/a", :text => 'manage').click 

यह क्या कहते हैं, एक स्तंभ जो पाठ 'फू' में शामिल है के साथ पंक्ति खोजें, और में एक कॉलम में लिंक पर क्लिक करें टेक्स्ट 'प्रबंधन' के साथ एक ही पंक्ति।

आप परवाह नहीं है कि कहां 'फू' दिखाई देता है (यानी पंक्ति में कहीं भी हो सकता है), तो आप ऐसा कर सकते हैं:

find(:xpath, "//tr[contains(.,'Foo')]/td/a", :text => 'manage').click 
+0

मेरा उत्तर अपडेट किया गया । मूल रूप से मैंने xpath के अंदर xpath और तारों के लिए एक ही एकल उद्धरण प्रारूप का उपयोग किया, जो काम नहीं करता था। –

+0

कमाल धन्यवाद ... – jpwynn

7

एक और उदाहरण:

When(/^I delete the Book with the Title "(.*?)"$/) do |title| 
    find('tr', text: title).click_link("Delete") 
end