Для этого может потребоваться написать упакованный селектор, который оценивает состояние ссылки и определяет, какой селектор использовать. Вам нужно будет реализовать быстрый способ определить, сколько строк занимает ссылка.
Для нескольких элементов ссылок вы не сможете найти непосредственно по имени, так как оно разделено, и у нас нет способа определить, какой текст и где разделен. Но мы можем написать XPath для элементов ссылки, которые могут найти их, не используя текст ссылки.
Если вы добавите еще немного HTML-кода для страницы, которую вы используете, я могу написать более удобный XPath, чтобы помочь получить ссылки.
public static bool ElementExists(this IWebDriver driver, By by)
{
return driver.FindElements(by).Count > 0;
}
// get 1 or multi-line link elements
public IWebElement GetLinkElements(string accountName)
{
// case: single-line link
if (driver.ElementExists(By.XPath("$//a[text()='{accountName}']")))
{
return driver.FindElement(By.XPath("$//a[text()='{accountName}']"));
}
// case: multi-line link, use FindElements for multiple
else {
return driver.FindElementsBy.XPath("//a"); // this should be more specific
}
}
Это общий пример, но если вы включите некоторый HTML для того, как выглядит остальная часть страницы вокруг ссылок, мы можем попытаться написать лучший XPath для их поиска.