验证复选按钮不可用



我使用此代码检查按钮是否存在:

protected void validateButtonPresence(WebDriver driver, String buttonId, String name) {
List<WebElement> resultList = driver.findElements(By.id(buttonId));
if(resultList.size() == 0)
{
try
{
throw new Exception("Button " + buttonId + " is not found!");
} catch (Exception e) {
e.printStackTrace();
}
}
}

我需要确认按钮不存在。我如何修改代码,以便检查按钮是否不存在?

您的代码与您想要的非常接近,因为元素存在和不存在是相同的逻辑,只是符号相反。

protected void validateButtonAbsence(WebDriver driver, String buttonId) {
List<WebElement> resultList = driver.findElements(By.id(buttonId));
if(resultList.size()! = 0)
{
throw new Exception("Button " + buttonId + " is present!");
}
}

您也可以返回布尔值,而不是抛出异常,如下所示:

protected boolean validateElementAbsence(WebDriver driver, String elementId) {
return (driver.findElements(By.id(elementId)).size == 0);
}

当您编写validateButtonPresence方法时,根据名称本身,它表示它是一个验证方法。验证方法应该始终返回布尔值验证失败还是通过?

示例代码:

protected boolean validateButtonPresence(WebDriver driver, String buttonId) {
boolean flag = false;
try {
if(!driver.findElement(By.id(buttonId)).isDisplayed()) {
throw new Exception("Button " + buttonId + " is not found!");
}
else {
System.out.println("Button is displayed on the page.");
flag = true;
}   
}
catch (NoSuchElementException e) {
return flag;
} 
catch (StaleElementReferenceException e) {
return flag;
}
catch(Exception e) {
e.printStackTrace();
}
return flag;
}

我相信通过引入ExplicitWaits,您可以有一个比这更可靠的方法。

最新更新