使用selenium Web驱动程序验证错误消息

时间:2017-12-21 06:45:55

标签: java selenium selenium-webdriver automated-tests qa

我想验证登录失败后显示的错误消息。我总是得到"测试用例失败"我试过了。

我想用"无效的用户名或密码"来验证文本。以下是我试过的代码。

这是html代码。

<div id="statusMsg">
  <div class="alert in fade alert-error" style="opacity: 1;">
    <a class="close" data-dismiss="alert">×</a>
      Invalid username or password
  </div>
</div>

这些是我试过的代码。

String actualMsg=driver2.findElement(By.xpath("//div[@id='statusMsg']/div")).getText()
String errorMsg= "× Invalid username or password";

if(actualError.equals(errorMsg)) {
        System.out.println("Test Case Passed");
    }else{
        System.out.println("Test Case Failed");
    };

输出总是&#34;测试用例失败&#34;。

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

要提取文字 Invalid username or password ,您必须按以下方式访问<div>标记:

String actualMsg = driver2.findElement(By.xpath("//div[@id='statusMsg']/div[@class='alert in fade alert-error']")).getAttribute("innerHTML");

接下来您的预期错误消息是:

String errorMsg = "× Invalid username or password";

由于 x 位于<a>标记内且 Invalid username or password 位于<div>标记内,验证过程将需要一点String操纵。为了使验证更简单,您可以按如下方式减少预期的错误消息:

String errorMsg = "Invalid username or password";

现在,您可以使用以下代码块来验证 actualMsg 是否包含 errorMsg ,如下所示:

if(actualMsg.contains(errorMsg)) 
{
    System.out.println("Test Case Passed");
}else
{
    System.out.println("Test Case Failed");
};

答案 1 :(得分:0)

在div内部,您只有文字“无效的用户名或密码”,但您正在验证“×无效的用户名或密码”。 首先从String actualMsg打印文本,然后输入正确的errorMsg。

String actualMsg = driver2.findElement(By.xpath("//div[@id='statusMsg']/div")).getText()
String errorMsg= "Invalid username or password";

if(actualError.equals(errorMsg)) {
        System.out.println("Test Case Passed");
    }else{
        System.out.println("Test Case Failed");
    }