我正在尝试通过不存在元素的测试(由于用户访问), 那么它将写入范围报告, 但我一直得到“没有这样的元素例外”。
我的代码是这样的:
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");
}
我也尝试过:
try
和catch (NoSuchElementException e)
,但测试仍然失败。 if
和Assert.assertNull
没有人工作过。
我做错了什么?
答案 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
}
希望这会有所帮助。感谢。