Java 验证是否存在链接
我试图验证链接是否存在-但是-如果它不存在,我希望我的脚本继续执行关闭浏览器,等等 我的脚本的目的是确定是否存在“删除地址”链接。如果是,我点击链接并删除地址。这个很好用。但是,如果链接不存在,我只想继续执行而不触发异常。如果链接不存在,我下面的代码将触发异常 谢谢你的帮助Java 验证是否存在链接,java,selenium,Java,Selenium,我试图验证链接是否存在-但是-如果它不存在,我希望我的脚本继续执行关闭浏览器,等等 我的脚本的目的是确定是否存在“删除地址”链接。如果是,我点击链接并删除地址。这个很好用。但是,如果链接不存在,我只想继续执行而不触发异常。如果链接不存在,我下面的代码将触发异常 谢谢你的帮助 try { String txt = driver.findElement(By.linkText("Delete Address")).getText().trim();
try {
String txt = driver.findElement(By.linkText("Delete Address")).getText().trim();
Assert.assertTrue(txt.equals("Delete Address"));
Alert javascriptprompt = driver.switchTo().alert();
javascriptprompt.accept();
} catch (NoSuchElementException e) {
}
我可以在这里看到几个选项 不要在测试中使用断言。在这种情况下,如果捕获到异常,测试将标记为成功 如果希望执行findElement调用后的行,可以 将findElement以外的所有行移出try{}子句 使用try{}catch{}finally{}构造,并将所有要执行的代码放入finally{}子句中,无论try{}中发生了什么 如果希望避免捕获异常,可以通过实现接口创建侦听器类,并在onTestFailure中使用 String stackTraceString=Throwables.getStackTraceAsStringgetCurrentTestResult.getThrowable 然后,如果异常为NoTouchElementException,则将测试结果设置为success
result.setStatus(ITestResult.SUCCESS);
setCurrentTestResult(result);
另一个解决方案是使用.findElements。它将返回一个空集合,而不是引发异常,如果给定的选择器没有找到元素。让我为您搜索一下:为什么您不能使用异常,因为您知道它不存在….NoTouchElementException???我想OP要求的是一种检查元素是否存在的方法,而不需要异常处理的开销。不,我不介意使用try/catch结构,但是当元素不存在时,测试就失败了。如果元素不存在,我不希望测试失败。如果链接存在,那么我想单击它,它工作正常,但如果没有,我不希望它在TestNG中报告为失败。