我已使用数据提供程序和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;
}
}
答案 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"));