总之,不,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();
}
我爱你! xD哈哈,非常感谢我今晚会为此拍摄一张照片,现在已经搞乱了3天了:) – Sam