Selenium WebDriver无法按链接文本查找元素

我正在尝试选择包含锚点的元素,但文本被隐藏在div内部的段落中。 这是我正在使用的HTML:

 

Smoke Sequential

我用来试图阻止它的代码是针对“Smoke Sequential”文本:

 driver.findElement(By.linkText(service)).click(); 

变量’service’在其中包含“Smoke Sequential”。 当我运行它时,我收到以下错误:

 org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Smoke Sequential"} 

任何帮助将不胜感激。

问题可能出在html的其余部分,即你没有发布的部分。

通过这个例子(我只是关闭了开放的标签):

  

Smoke Sequential

我能够找到没有问题的元素:

 driver.findElement(By.linkText("Smoke Sequential")).click(); 

如果元素中有更多文本,您可以尝试通过部分链接文本进行查找:

 driver.findElement(By.partialLinkText("Sequential")).click(); 

使用xpath和text()

 driver.findElement(By.Xpath("//strong[contains(text(),'" + service +"')]")); 

这似乎没有 标签,因此selenium可能无法将其检测为链接。

你可以尝试使用

 driver.findElement(By.xpath("//*[@class='ng-binding']")).click(); 

如果这是该页面中唯一具有此类的元素。

CSS选择器方法肯定可以在这里工作。 尝试:

 driver.findElement(By.CssSelector("a.item")).Click(); 

如果在此类项之前有其他锚点,则无效。 如果您执行类似“#my_table> a.item”的操作,则可以更好地指定确切的元素,其中my_table是锚是其子项的表的id。

 find_elements_by_xpath("//*[@class='class name']") 

是一个很好的解决方案