Selenium如果元素不存在,如何不失败测试(java)

时间:2017-06-14 10:35:50

标签: java selenium

我正在尝试通过不存在元素的测试(由于用户访问), 那么它将写入范围报告, 但我一直得到“没有这样的元素例外”。

我的代码是这样的:

if (homePage.cloudAdminApp.isDisplayed())
{
    test.log(LogStatus.PASS, getData("USER") +" have  o/cloud admin application access but it shoudn't have");
}
else 
{
    test.log(LogStatus.PASS, getData("USER") +" have not o/cloud admin application access");
}

我也尝试过:

  • 添加trycatch (NoSuchElementException e),但测试仍然失败。
  • 添加而不是ifAssert.assertNull

没有人工作过。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果网页findElement上没有元素,则会返回NoSuchElementException

FindElements将返回空列表,以便您可以尝试这种方式

List<WebElement> elements = driver.findElements(By.locator);

if(elements.size()>0)
{
    elements.get(0).click()
}

另一种方法是将您的代码正确地包含在try catch块

e.g。

try
{
       driver.findElement(By.locator).click();
}
catch(Exception e)
{
   System.out.println("No Element");
   // write your code here for action have to do if element is not there
}

答案 1 :(得分:0)

我们可以使用findelements来检查元素是否存在而不使用try / catch。它也很简单。下面的代码可能会给你一些想法,

if(driver.findElements(By.id(CLOUDADMINAPP)).size>0)
{
    //Element is present now
    //Do the Stuff
}else
{
    //Element is not present
    //Do the stuff
}

希望这会有所帮助。感谢。