Если я правильно понимаю, вы хотите метод, в котором вы можете передать конкретную ссылку в качестве параметра, если не передана ссылка, вы должны нажать случайную ссылку из списка.
Пожалуйста, посмотрите примерреализация ниже.
//Click one link randomly
private void ClickRandomLink(string linkText = null)
{
//get all links
var links = _driver.FindElements(By.TagName("a")).ToList();
if (!string.IsNullOrEmpty(linkText))
{
var link = links.FirstOrDefault(x => x.GetAttribute("href").Equals(linkText)) ??
throw new Exception($"Link with name: {linkText} not found");
link.Click();
}
else
{
//click random element in list
links.ElementAt(new Random().Next(0, links.Count - 1)).Click();
}
}
Нажмите все доступные ссылки случайным образом
private void ClickRandomLinks(string linkText = null)
{
//get all links
var links = _driver.FindElements(By.TagName("a")).ToList();
//click all links matching predicate
if (!string.IsNullOrEmpty(linkText))
{
var linkElements = links.Where(x => x.GetAttribute("href").Contains(linkText)).ToList();
if(!linkElements.Any()) throw new Exception($"Links with name: {linkText} not found");
//Generate random order
var randomElements = Enumerable.Range(0, linkElements.Count-1).OrderBy(x => Guid.NewGuid()).ToList();
randomElements.ForEach(x => linkElements.ElementAt(x).Click());
}
else
{
//click all links randomnly
var randomElements = Enumerable.Range(0, links.Count-1).OrderBy(x => Guid.NewGuid()).ToList();
randomElements.ForEach(x => links.ElementAt(x).Click());
}
}
Надеюсь, это поможет.