首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium C# Webdriver FindElements(By.LinkText) RegEx?

Selenium C# Webdriver FindElements(By.LinkText) RegEx?
EN

Stack Overflow用户
提问于 2012-09-16 22:28:36
回答 2查看 41.1K关注 0票数 6

是否可以通过使用像A-ZNN:NN:NN:NN这样的模式搜索网页上的链接,其中N是一个数字(0-9)。

我在PHP中使用正则表达式将文本转换为链接,所以我想知道是否可以在Selenium和C#中使用这种过滤器来查找符合特定格式的看起来完全相同的链接。

我试过了:

代码语言:javascript
运行
复制
driver.FindElements(By.LinkText("[A-Z][0-9]{2}):([0-9]{2}):([0-9]{2}):([0-9]{2}")).ToList();

但这并不管用。有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-17 08:13:22

一言以蔽之,没有一个FindElement()策略支持使用正则表达式查找元素。最简单的方法是使用FindElements()查找页面上的所有链接,并将它们的.Text属性与您的正则表达式相匹配。

但请注意,如果单击链接会导航到同一浏览器窗口中的新页面(即,在单击链接时不会打开新的浏览器窗口),则需要捕获要单击的所有链接的确切文本以供以后使用。我之所以提到这一点,是因为如果您试图保留对在初始FindElements()调用期间找到的元素的引用,那么在单击第一个元素后,这些引用将会失效。如果这是您的场景,代码可能如下所示:

代码语言:javascript
运行
复制
// 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();
}
票数 11
EN

Stack Overflow用户

发布于 2012-09-16 23:20:31

不要使用正则表达式来解析Html。

使用htmlagilitypack

您可以按照以下步骤操作:

Step1使用HTML PARSER从特定网页中提取所有链接并将其存储到列表中。

代码语言:javascript
运行
复制
HtmlWeb hw = new HtmlWeb();
 HtmlDocument doc = hw.Load(/* url */);
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href]"))
 {
//collect all links here
 }

Step2使用此正则表达式匹配列表中的所有链接

代码语言:javascript
运行
复制
.*?[A-Z]\d{2}:\d{2}:\d{2}:\d{2}.*?

Step 3你会得到你想要的链接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12447690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档