एक शब्द में, नहीं, FindElement()
रणनीतियों में से कोई भी तत्वों को खोजने के लिए नियमित अभिव्यक्तियों का उपयोग करके समर्थन नहीं करता है। ऐसा करने का सबसे आसान तरीका पृष्ठ पर सभी लिंक खोजने के लिए FindElements()
का उपयोग करना होगा, और अपनी नियमित अभिव्यक्ति में .Text
संपत्ति से मेल खाना होगा।
ध्यान दें कि यदि लिंक पर क्लिक करना उसी ब्राउज़र विंडो में किसी नए पृष्ठ पर नेविगेट करता है (यानी, लिंक पर क्लिक करते समय कोई नई ब्राउज़र विंडो नहीं खुलती है), तो आपको सभी का सटीक टेक्स्ट कैप्चर करना होगा उन लिंकों का उपयोग जिन्हें आप बाद में उपयोग के लिए क्लिक करना चाहते हैं। मैं इसका जिक्र करता हूं क्योंकि यदि आप अपने शुरुआती FindElements()
कॉल के दौरान पाए गए तत्वों के संदर्भों को पकड़ने का प्रयास करते हैं, तो आप पहले व्यक्ति पर क्लिक करने के बाद बासी हो जाएंगे। यह आपके परिदृश्य है, कोड कुछ इस तरह दिख सकता है:
// WARNING: Untested code written from memory.
// Not guaranteed to be exactly correct.
List<string> matchingLinks = new List<string>();
// Assume "driver" is a valid IWebDriver.
ReadOnlyCollection<IWebElement> links = driver.FindElements(By.TagName("a"));
// You could probably use LINQ to simplify this, but here is
// the foreach solution
foreach(IWebElement link in links)
{
string text = link.Text;
if (Regex.IsMatch("your Regex here", text))
{
matchingLinks.Add(text);
}
}
foreach(string linkText in matchingLinks)
{
IWebElement element = driver.FindElement(By.LinkText(linkText));
element.Click();
// do stuff on the page navigated to
driver.Navigate().Back();
}
मैं तुमसे प्यार करता हूँ! एक्सडी लॉल बहुत बहुत धन्यवाद, मैं इसे आज रात एक शॉट दूंगा, इसके साथ 3 दिनों के लिए इस पर गड़बड़ कर रहा हूं :) – Sam