gpt4 book ai didi

c# - Selenium C# Webdriver FindElements(By.LinkText) 正则表达式?

转载 作者:太空狗 更新时间:2023-10-29 22:33:23 24 4
gpt4 key购买 nike

是否可以通过使用类似 A-ZNN:NN:NN:NN 的模式搜索网页上的链接来找到链接,其中 N 是一个数字(0-9).

我在 PHP 中使用 Regex 将文本转换为链接,所以我想知道是否可以在带有 C# 的 Selenium 中使用这种过滤器来查找看起来都一样、遵循特定格式的链接。

我试过:

driver.FindElements(By.LinkText("[A-Z][0-9]{2}):([0-9]{2}):([0-9]{2}):([0-9]{2}")).ToList();

但这没有用。有什么建议吗?

最佳答案

总之,不,所有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();
}

关于c# - Selenium C# Webdriver FindElements(By.LinkText) 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12447690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com