regex - XPath: फ़ंक्शन में रेगेक्स का उपयोग करना शामिल है




selenium-webdriver contains (2)

XPath 1.0 मूल रूप से regex को संभाल नहीं करता है, आप कुछ ऐसा करने का प्रयास कर सकते हैं

//*[starts-with(@id, 'sometext') and ends-with(@id, '_text')]

(जैसा कि पॉल टी द्वारा इंगित किया गया है, //*[boolean(number(substring-before(substring-after(@id, "sometext"), "_text")))] का उपयोग आपके मूल रेगेक्स को जांचने के लिए किया जा सकता है करता है, अगर आपको मध्य अंकों की भी जांच करनी है)

XPath 2.0 में, कोशिश करें

//*[matches(@id, 'sometext\d+_text')]

मैं निम्नांकित regex का उपयोग कर निम्न पाठ sometext12345_text से निम्नलिखित पाठ से मेल खाना चाहता हूं। मैं इसे अपने सेलेनियम परीक्षणों में से एक में उपयोग कर रहा हूं।

String expr = "//*[contains(@id, 'sometext[0-9]+_text')]";
driver.findElement(By.xpath(expr));

हालांकि यह काम नहीं कर रहा है। क्या कोई मदद कर सकता है?


यदि आप फ़ायरफ़ॉक्स के साथ सेलेनियम का उपयोग कर रहे हैं तो आप EXSLT एक्सटेंशन का उपयोग करने में सक्षम होना चाहिए, और regexp:test()

क्या यह आपके लिए काम करता है?

String expr = "//*[regexp:test(@id, 'sometext[0-9]+_text')]";
driver.findElement(By.xpath(expr));




contains