一言で言えば、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();
}