java - 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&wvr=6&mod=headfollow#place">
<strong class="W_f12">170</strong>
<span class="S_txt2">fans</span>
</a>
</td>
</tr>
</tbody>
如果“粉丝”有href链接,那么我会点击“粉丝”链接。如果没有,我将跳过这一步并继续做其他人。
ExpectedConditions.presenceOfElementLocated 不适用于这种情况,因为它会在找不到href链接并停止测试时抛出异常。
解决方案
为了检查节点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
如果不存在,上面的代码不会抛出任何错误。所以你不需要在那里处理任何异常。
我希望它有帮助...
推荐阅读
- microsoft-teams - 在 Microsoft Teams 应用程序中创建斜杠命令
- azure-devops - Azure DevOps Server 2019 on-prem 是否支持来自另一个存储库的 yaml 模板?
- reactjs - 问题测试是否使用 Jest/Enzyme 调用内部函数
- python - 使用python将txt加载到json中循环多个文件
- javascript - 如果我更新了一个反应模块,使得现有的代码功能但 Jest 快照测试可能会中断,那应该是主要版本的碰撞吗?
- python - Python 请求:在不绕过的情况下修复 SSL_verify_failed (verify=False)
- python - 使剔除函数在 dask 图上工作
- python - 删除熊猫数据框中某些观察值(时间序列)的简单方法?
- kubernetes - nodeSelector 无法可靠地将 pod 放置在正确的 EKS 工作节点上
- java - 弹簧安全 LDAP。使用 SearchControls.OBJECT_SCOPE 代替 SearchControls.SUBTREE_SCOPE