一尘不染

selenium:如何通过部分href查找元素?

selenium

工作代码1:

Driver.Instance.FindElement( By.XPath("//a[contains(@href,'" + PartialLinkHref + "')]" ));

工作代码2:

ReadOnlyCollection<IWebElement> linkList = Driver.Instance.FindElements(By.TagName("a"));
for (int i = 0; i < linkList.Count ; i++)
{
     if (linkList[1].GetAttribute("href").Contains(PartialLinkHref))
     {
          element.SetElement(linkList[i]);
          return element;
          break;
     }
}

阅读 1240

收藏
2020-06-26

共1个答案

一尘不染

初始选择器的问题是缺少//选择器的前面。在//告诉XPath来搜索整个HTML树。

这应该可以解决问题:

Driver.Instance.FindElement(By.XPath("//a[contains(@href, 'long')]"))

如果要查找元素的子代,请.//改用,例如

var element = Driver.Instance.FindElement("..some selector..")
var link = element.FindElement(".//a[contains(@href, 'long')]"))

如果要查找包含 文本 而不是href属性的链接,则可以使用

Driver.Instance.FindElement(By.XPath("//a[contains(text(), 'long')]"))
2020-06-26