首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Selenium来验证动态更改的数据

问如何使用Selenium来验证动态更改的数据
EN

Stack Exchange QA用户
提问于 2017-12-28 10:07:52
回答 1查看 4.1K关注 0票数 5

我必须使用Selenium来测试具有实时时间戳的应用程序。

我的代码是:

代码语言:javascript
复制
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);

但是,如果我再次运行它,时间戳和库存将更改为:

代码语言:javascript
复制
12-27-2017 - 23:45:47 : updated inventory from 21 to 22. Reason : Quantity received from PO "#SCT1076"

谁给我解决问题的办法

HTML是:

代码语言:javascript
复制
<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>

我该如何处理这种情况?

EN

回答 1

Stack Exchange QA用户

发布于 2017-12-28 13:17:58

您需要做的是进行一些字符串解析。

我假设您知道您在库存中添加了多少,作为代码的一部分,但是您不知道PO是什么。

因此,作为测试设置的一部分,您可以保存当前的系统日期时间。您知道更新时间戳将接近您保存的日期时间,因此您可以使用日期和时间库来创建时间范围。

如果您的系统时间戳是12-28-2017 - 05:00:15,并且使用的是1分钟的时间范围,那么您可以使用语言的日期/时间库来添加1分钟,并给出12-28-2017 - 05:01:15的最大时间戳。

现在,解析乐趣来了:

  • 首先,从第一个:之前获取子字符串。
  • 由此,您可以使用字符串到日期转换来获取记录的实际时间戳。
  • 然后断言实际时间戳介于最小时间戳和最大时间戳之间。您可能需要几次尝试才能将时间范围确定到没有重叠的时间范围,并准确地捕捉到真正的时间戳。
  • 要获得数量变化,您可以在单词from和to之间取子字符串,修剪前导和尾随空格,然后转换为整数。这是你以前的数量。
  • 然后取单词to和第一个句点(.)之间的子字符串。再次,修剪前导和尾随空格,然后转换为一个整数,以获得您的新数量。
  • 您的最后断言是,新数量和旧数量之间的区别是您添加到库存中的数量。

这是微妙和混乱的,但当你处理这样的事情,除非你可以访问一个数据库,你可以直接检查时间戳或其他类型的信息,你正在独立维护,没有太多的选择。

老实说,在这种情况下,我会寻找比尝试从一个长字符串解析日期和数量更改更容易测试的东西。

票数 4
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/31232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档