【发布时间】:2020-03-05 11:29:29
【问题描述】:
我正在使用 Selenium Java,我需要获取以下不带时间的日期格式,作为 selenium java 中的字符串,以验证它是否与发布日期保持同步。我通过从时间和日期拆分来使用网站上的 getText() 方法。除了这个解决方案,还有其他最好的方法吗!
【问题讨论】:
标签: java selenium date validation
我正在使用 Selenium Java,我需要获取以下不带时间的日期格式,作为 selenium java 中的字符串,以验证它是否与发布日期保持同步。我通过从时间和日期拆分来使用网站上的 getText() 方法。除了这个解决方案,还有其他最好的方法吗!
【问题讨论】:
标签: java selenium date validation
编辑:我添加了更多解释和更多代码行。
网站上的字符串不包括年份,这有点挑战。一种简单的处理方法是:
ZoneId websiteTimeZone = ZoneId.of("America/Lower_Princes");
DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("dd-MMM HH:mm", Locale.ENGLISH);
String stringFromWebsite = "06-Feb 06:37";
MonthDay today = MonthDay.now(websiteTimeZone);
System.out.println("Today is " + today);
MonthDay date = MonthDay.parse(stringFromWebsite, formatter);
System.out.println("Date from website is " + date);
if (date.equals(today)) {
System.out.println("It’s up to date");
} else {
System.out.println("It’s *NOT* up to date");
}
我今天(3 月 12 日)跑步时,打印出了 sn-p:
Today is --03-12 Date from website is --02-06 It’s *NOT* up to date
MonthDay 是没有年份的月份和月份中的某天。使用这个类的好处是我们不需要关心年份。一个可能的缺点是我们无法比较两个这样的对象来确定哪个在另一个之前或之后。这样的比较需要知道每个人的年份。
我们需要知道网站使用的时区,因为它在地球上的任何地方都不会是相同的日期。请在我放置 America/Lower_Princes 的位置插入正确的。
我正在将来自网站的字符串解析为 MonthDay,使用格式模式为 dd-MMM HH:mm 的 DateTimeFormatter,因为小写 d 代表月份,M 代表月份,H 代表小时和小写 m 表示小时的分钟。由于我正在解析为MonthDay,因此忽略了时间(仅检查其语法)。在印刷品中,--03-12 表示 3 月 12 日,--02-06 同样表示 2 月 6 日(网站上的日期)。由于它们不相同,因此代码会显示该网站不是最新的。
更高级的解决方案可能会检查日期是在今天日期之前还是之后几天和/或同时查看时间。
链接
【讨论】:
您可以使用 selenium 的getText(),以获取字符串形式的值。
之后你可以使用Java的DateTimeFormatter,来解析这个日期,并把它转换成你想要的格式
【讨论】: