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

Dar*_*lya 5 java selenium automated-tests qa selenium-webdriver

我想验证登录失败后显示的错误消息。我总是收到我尝试过的“测试用例失败”。

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

这是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>
Run Code Online (Sandbox Code Playgroud)

这些是我试过的代码。

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");
    };
Run Code Online (Sandbox Code Playgroud)

输出总是“测试用例失败”。

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

Deb*_*anB 4

要提取文本,Invalid username or password您必须按<div>如下方式访问标签:

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

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

\n\n
String errorMsg = "\xc3\x97 Invalid username or password";\n
Run Code Online (Sandbox Code Playgroud)\n\n

由于xis inside<a>标记和Invalid username or passwordis inside<div>标记,验证过程将需要一些String操作。为了使验证更简单,您可以减少预期的错误消息,如下所示:

\n\n
String errorMsg = "Invalid username or password";\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
if(actualMsg.contains(errorMsg)) \n{\n    System.out.println("Test Case Passed");\n}else\n{\n    System.out.println("Test Case Failed");\n};\n
Run Code Online (Sandbox Code Playgroud)\n