我必须使用Selenium来测试具有实时时间戳的应用程序。
我的代码是:
String validationmessage=driver.findElement(By.xpath("//div[@id='part_log_details']/p[1]")).getText();
System.out.println(validationmessage);
Assert.assertEquals("12-27-2017 - 23:00:47 : updated inventory from 20 to 21. Reason : Quantity received from PO #SCT1075", validationmessage);但是,如果我再次运行它,时间戳和库存将更改为:
12-27-2017 - 23:45:47 : updated inventory from 21 to 22. Reason : Quantity received from PO "#SCT1076"谁给我解决问题的办法
HTML是:
<div id="part_log_details" style="">
<p>12-28-2017 - 02:21:21 : updated inventory from 23 to 25. Reason : Quantity received from PO #SCT1077</p>
<p>12-28-2017 - 02:16:05 :updated inventory from 21 to 23. Reason : Quantity received from PO #SCT1076
<p>12-27-2017 - 23:00:47 : updated inventory from 20 to 21. Reason : Quantity received from PO #SCT1075</p>我该如何处理这种情况?
发布于 2017-12-28 13:17:58
您需要做的是进行一些字符串解析。
我假设您知道您在库存中添加了多少,作为代码的一部分,但是您不知道PO是什么。
因此,作为测试设置的一部分,您可以保存当前的系统日期时间。您知道更新时间戳将接近您保存的日期时间,因此您可以使用日期和时间库来创建时间范围。
如果您的系统时间戳是12-28-2017 - 05:00:15,并且使用的是1分钟的时间范围,那么您可以使用语言的日期/时间库来添加1分钟,并给出12-28-2017 - 05:01:15的最大时间戳。
现在,解析乐趣来了:
:之前获取子字符串。from和to之间取子字符串,修剪前导和尾随空格,然后转换为整数。这是你以前的数量。to和第一个句点(.)之间的子字符串。再次,修剪前导和尾随空格,然后转换为一个整数,以获得您的新数量。这是微妙和混乱的,但当你处理这样的事情,除非你可以访问一个数据库,你可以直接检查时间戳或其他类型的信息,你正在独立维护,没有太多的选择。
老实说,在这种情况下,我会寻找比尝试从一个长字符串解析日期和数量更改更容易测试的东西。
https://sqa.stackexchange.com/questions/31232
复制相似问题