硒测试用例在每种情况下都可以通过页面上是否存在元素

时间:2019-07-31 10:10:15

标签: java selenium selenium-webdriver ui-automation

我的硒测试用例如下:

@Test(priority = 1)
public void Check_Funnel_on_homepage() throws Exception {
    try {
        isElementDisplayed((By.id(propObjctRepo.getProperty("xpath_abc"))));
    } catch (Exception e) {
        addErrorlogs(e, "Error message");
    }
}

我的测试方法如下:

@SuppressWarnings("deprecation")
public boolean isElementDisplayed(By element) throws Exception {
    try {
        Assert.assertTrue(dvr.findElement(element).isDisplayed());
        addlogs("Element " + element + " found on page");
        System.out.println("Element " + element + " found on page");
        return true;
    } catch (AssertionError e) {
        System.out.println("Element " + element + " not found on page");
        return false;
    } catch (Exception e) {
        System.out.println("Element " + element + " not found on page");
        return false;
    }
}

我面临一个问题,在每种情况下,页面上存在的元素或测试用例是否不返回true并传递testNG报告。

2 个答案:

答案 0 :(得分:3)

如果isElementDisplayed()返回false,您什么也不做,您需要使用assert

public void checkFunnelOnHomepage() {
    By by = By.id(propObjctRepo.getProperty("xpath_abc"));
    boolean isDisplayed = isElementDisplayed(by);
    Assert.assertTrue(isDisplayed, "Element " + by + " not found on page");
}

您可以将断言消息添加到assertTrue(),并将isElementDisplayed(By element)更改为仅返回truefalse

public boolean isElementDisplayed(By by) {
    List<WebElement> elements = dvr.findElements(by);
    return elements.size() > 0 && elements.get(0).isDisplayed();
}

如果您使用findElements,请避免使用try catch。它也是recommended way

  

findElement不应用于查找不存在的元素,请使用   WebDriver.findElements(由)

请谨慎使用try catch,它将忽略断言错误。

请注意,根据Java naming conventions Check_Funnel_on_homepage应该为checkFunnelOnHomepage

答案 1 :(得分:1)

这是因为您正在捕获断言错误并返回false。对返回的值不做任何事情。因此测试的最终结果是测试用例通过