如何在硒测试用例中断言成功登录testng?

时间:2019-03-11 06:37:18

标签: excel selenium java-ee continuous-integration testng

我已使用数据提供程序和excel表进行登录。 如果用户是真实用户,则将成功登录,但是如果用户不是真实用户(错误的密码或用户名),则会显示一条消息“无效的用户名/密码!”

以上文字-“无效的用户名/密码!”仅当用户不可靠时才能提取。由于此文本提取是代码的一部分,因此它将同时对有效用户和无效用户运行,并且当用户有效时,如果尝试提取文本,我们将获得异常,因为在有效用户的情况下将找不到该元素。

我应该如何为错误的用户断言,以使测试用例不会失败。

下面是登录代码

public void Login(String username,String pwd) throws Exception
{
     Login l = PageFactory.initElements(driver, Login.class);

        driver.switchTo().frame(l.frameElement);

        l.user.sendKeys(username);
        l.passwd.sendKeys(pwd);
        l.loginButton();
     //   String errmsg=l.ErrorMessage.getText().toString();
        String expected="Login failed, please try again.";
     //   Assert.assertEquals(expected, l.err1);
        driver.navigate().refresh();

}

登录方法在单独的类中调用

public class xHybrid extends BaseClass {        

public static String testDataFileName;
//Provide the value of worksheet to be used processed
String workSheetName = "Sheet1";
//ITestContext localTestContext;

@DataProvider(name="createData")
public Object[][] createData()  {   

     try {
            //Object[][] retObjArr = DataGenerator.getDataTable(testDataFileName, workSheetName);
            Object[][] retObjArr = DataGenerator.getDataTable("C:\\Users\\srawat\\Desktop\\proj2.xlsx", "Sheet1");
            return (retObjArr);
        } catch (Throwable e) {
            return new Object[][] {{}};
        }

}

@Test(dataProvider = "createData")
public void Login(HashMap<String, String> input) throws Exception
         {      
    if (! input.get("RunMode").equalsIgnoreCase("N")) {         

        String[] test_ste = input.get("TestSteps").split(",");
        for (String test_step : test_ste) {

            switch (test_step) {
            case "loginWithCredentials":
                Admin_Login a=new Admin_Login();
                a.Login(input.get("username"), input.get("password"));


                break;

            case "logout":
                Sign_Out o=new Sign_Out();
                o.logOut();
                break;
    }


}

Excel Sheet

1 个答案:

答案 0 :(得分:0)

登录失败后(错误的用户),您可以在错误消息上对可见性应用断言。您可以使用以下代码检查对象的可见性或不可见性并应用断言。

public boolean checkObjectExist(By by)  {
        boolean objectExist = false;
        try {
            objectExist = getDriver().findElement(by).isDisplayed();
        } catch (NoSuchElementException e) {
            return false;
        }
        return objectExist;
    }

关于错误消息可见性的断言。 (如果用户无法登录)

assertTrue(checkObjectExist("ByObjectOfErrorMessage"));

对用户名的可见性应用断言(如果用户能够登录)

assertTrue(checkObjectExist("userName/userImage"));