EDITED
我稍微更改了我的代码,我的页面对象中有以下功能。
public void kenshoSearch(String searchTerm) throws Exception
{
driver.findElement(kenshoSearchBox).sendKeys(searchTerm);
try {
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(kenshoSearchVerify));
}
catch (NoSuchElementException e) {
System.out.println("No Results Found");
}
}
当我对没有任何结果的关键字运行测试时,它应该打印出“No Results Found”,但实际上它会在控制台上抛出NoSuchElementException以及堆栈跟踪。
我在这里做错了什么?
答案 0 :(得分:1)
实际上有两种方式:
1)。
您可以抓住NoSuchElementException
并在短信中添加新的AssertException
。
2)。 你应该使用:
而不是捕获异常List<WebElement> elements = getDriver().findElements(By.xpath("your xpath"));
Assert.assertTrue(elements.size()>0, "No Results found for \"Search Term\" ");
在这里,您尝试使用findElements
代替findElement
填充包含所有找到的元素的列表。如果findElements
找不到任何WebElement
,则不会引发异常。因此,如果找到元素,您可以通过列表的大小轻松检查。
答案 1 :(得分:0)
您可以将代码包装在try ... catch块中,并在捕获NoSuchElementException后处理断言:
try {
new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated("xpath of the div that contains the results"));
} catch (NoSuchElementException e) {
// ...
}