總之,不,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