Selenium:如何通过部分href找到元素?

And*_*rew 5 c# selenium href partial

工作代码1:

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

工作代码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;
     }
}
Run Code Online (Sandbox Code Playgroud)

gai*_*zov 5

初始选择器的问题在于您错过//了选择器前面的问题.在//告诉XPath来搜索整个HTML树.

这应该做的伎俩:

Driver.Instance.FindElement(By.XPath("//a[contains(@href, 'long')]"))
Run Code Online (Sandbox Code Playgroud)

如果你想找到一个元素的子元素,请.//改用,例如

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

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

Driver.Instance.FindElement(By.XPath("//a[contains(text(), 'long')]"))
Run Code Online (Sandbox Code Playgroud)