简而言之,没有一种
FindElement()策略支持使用正则表达式查找元素。最简单的方法是使用它
FindElements()来找到页面上的所有链接,并将它们的
.Text属性与您的正则表达式匹配。
但是请注意,如果单击链接会在同一浏览器窗口中导航到新页面(即,单击链接时未打开新的浏览器窗口),则需要捕获所有链接的确切文本想点击以备后用。我之所以这样说是因为,如果您尝试保留对在首次
FindElements()调用过程中找到的元素的引用,则在单击第一个元素之后,它们将过时。如果这是您的情况,则代码可能如下所示:
// WARNING: Untested pre 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 solutionforeach(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();}


