您可能需要为此编写一个包装的选择器,以评估链接状态并确定要使用的选择器。您将需要实施一种快速方法来检测链接占用了多少行。
对于多个链接元素,您将无法直接通过名称找到,因为它是拆分的,我们无法确定哪些文本在哪里拆分。但是我们可以为链接元素编写一个 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 来查找它们。