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中报告为失败。