使用 selenium Web 驱动程序验证错误消息
Posted
技术标签:
【中文标题】使用 selenium Web 驱动程序验证错误消息【英文标题】:Verify an error message using selenium web driver 【发布时间】:2018-06-03 19:15:27 【问题描述】:我想验证登录失败后显示的错误消息。我总是得到我尝试过的“测试用例失败”。
我想用“无效的用户名或密码”验证文本。以下是我尝试过的代码。
这是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");
;
输出总是“测试用例失败”。
有没有办法解决这个问题?
【问题讨论】:
【参考方案1】:要提取文本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");
;
【讨论】:
【参考方案2】:在 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");
;
【讨论】:
以上是关于使用 selenium Web 驱动程序验证错误消息的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Selenium Web 驱动程序检测 Windows 身份验证提示?
如何使用java中的selenium Web驱动程序中的分页搜索表中的元素
python 中的 Web Scraping:BS、selenium 和 None 错误