首页 > 解决方案 > selenium如何知道一个元素是否有href链接,如果没有继续测试

问题描述

我正在使用 selenium java 3.141.59 和 testng 6.14.3。
测试页面可能显示如下

<tbody>
  <tr>
    <td class="S_line1">
      <strong class="W_f12">82</strong>
      <span class="S_txt2">fans</span>
    </td>
  </tr>
</tbody>

或者

<tbody>
  <tr>
    <td class="S_line1">
      <a bpfilter="page_frame" class="t_link S_txt1" href="//xx.com/p/1003061291477752/follow?from=page_100306&amp;wvr=6&amp;mod=headfollow#place">
        <strong class="W_f12">170</strong>
        <span class="S_txt2">fans</span>
      </a>
    </td>
  </tr>
</tbody>

如果“粉丝”有href链接,那么我会点击“粉丝”链接。如果没有,我将跳过这一步并继续做其他人。
ExpectedConditions.presenceOfElementLocated 不适用于这种情况,因为它会在找不到href链接并停止测试时抛出异常。

标签: javaselenium

解决方案


为了检查节点href是否存在,您可以使用下面的 XPath 来识别a节点,因为href它存在于内部a(我假设该类在这里是唯一的,如果不是,则使用其他一些//a在末尾附加的定位器):

String xpath = "//td[@class=\"S_line1\"]/a"

您可以检查它的存在,如下所示:

List<WebElement> hrefs = driver.findElements(By.xpath(xpath));
if(hrefs.size() > 0) {
    System.out.println("=> The href is present...");
    hrefs.get(0).click();
} else {
    System.out.println("=> The href is not present...");
}

href如果不存在,上面的代码不会抛出任何错误。所以你不需要在那里处理任何异常。

我希望它有帮助...


推荐阅读