【发布时间】:2018-04-11 09:26:16
【问题描述】:
我有用于 Selenium Webdriver TestNG 的 Java 代码。用于比较网站上的日期是否与今天的日期相同。
问题是 2018 年 4 月 11 日网页 dateOnWebpage 上的日期是格式
今天 2018 年 4 月 11 日
所以我做了选择器来比较日期格式,如果月份 if(javaDateSelector < 10) 比要比较的日期格式为 M/dd/yyyy 否则为格式 MM/dd/yyyy。
有没有比我做的更好的编码方式?因为我需要将日期解析为字符串,而不是解析为 int 来比较它,而且代码很长。
@Test(priority=3)
public void test3DateCheck() throws Exception
{
String dateOnWebpage = driver.findElement(By.xpath("//div[@id='homeCalendarSection']/div/div[2]/table/tbody/tr/td/div/ul/li")).getText();
System.out.println("Today Date on webpage is : " + dateOnWebpage);
//DateFormat dateFormat1 = new SimpleDateFormat("M/dd/yyyy");
DateFormat dateFormat1 = new SimpleDateFormat("MM");
Date date = new Date();
String javaDate1 = dateFormat1.format(date);
int javaDateSelector = Integer.parseInt(javaDate1);
if(javaDateSelector < 10)
{
DateFormat dateFormat2 = new SimpleDateFormat("M/dd/yyyy");
String javaDate2 = dateFormat2.format(date);
System.out.println("Today Date from Java is : " + javaDate2);
Assert.assertEquals(dateOnWebpage, "Today " + javaDate2);
}
else
{
DateFormat dateFormat3 = new SimpleDateFormat("MM/dd/yyyy");
String javaDate3 = dateFormat3.format(date);
System.out.println("Today Date from Java is : " + javaDate3);
Assert.assertEquals(dateOnWebpage, "Today " + javaDate3);
}
}
【问题讨论】:
-
我建议你避免使用
SimpleDateFormat类。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 中做得更好。 -
4 月 9 日会在网页上显示为
4/9/2018还是4/09/2018? -
不需要有条件地切换格式。
M/dd/yyyy与MM/dd/yyyy相同的月份 >=10。 -
1)@Ole V.V.对不起,我不知道 4 月 9 日是否在网页上显示为 2018 年 4 月 9 日或 2018 年 4 月 9 日 - 但谢谢这可能会导致另一个问题。 2)@Thomas 我需要有条件地切换格式 M/dd/yyyy 与 MM/dd/yyyy 不同,如果我这样做我得到错误 java.lang.AssertionError: expected [Today 04/11/2018] 但发现 [今天 2018 年 4 月 11 日]
标签: java date selenium-webdriver compare