日期选择器基于Java中的月份

时间:2018-04-11 09:26:17

标签: java date selenium-webdriver compare

我有Selenium Webdriver TestNG的Java代码。用于比较网站上的日期是否与今天日期相同。 问题是2018年4月11日网页dateOnWebpage上的日期格式为

  

今天4/11/2018

所以我选择比较日期格式,如果几个月&lt; 10 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);
  }

}

1 个答案:

答案 0 :(得分:1)

如果您不关心网页上的日期是否以月份和月份的前导零写入,只是想测试日期是否正确:

    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("'Today' M/d/uuuu");
    LocalDate today = LocalDate.now(ZoneId.of("Pacific/Norfolk"));
    System.out.println("Today is " + today);
    LocalDate observedDate = LocalDate.parse(dateOnWebpage, dateFormatter);
    Assert.assertEquals(today, observedDate);

而不是测试字符串我正在解析日期并测试它。即使模式中有一个M和一个d,解析两个月的月份和两位数的日期也没有问题。

另一方面,如果您还想测试网页上的日期是否没有任何前导零,那么最好像测试一样测试字符串:

    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("M/d/uuuu");
    LocalDate today = LocalDate.now(ZoneId.of("Pacific/Norfolk"));
    String todayString = today.format(dateFormatter);
    System.out.println("Today is " + todayString);
    Assert.assertEquals("Today " + todayString, dateOnWebpage);

同样,即使模式中有一个M和一个d,如果月份或月份的日期大于9,也会打印两位数。{{ 1}}方法吗?如果您每月需要两位数的日期,请将format放在格式模式字符串中。

在两个片段中,请填写我所在的时区,我放置太平洋/诺福克,因为它在世界各地从来都不是同一个日期。

我正在使用并推荐现代Java日期和时间API ddjava.timeDateFormat不仅已经过时了,而且也是出了名的麻烦。 SimpleDateFormat就像过时一样。我会完全避免这些课程。现代API通常可以更好地使用。

链接: Oracle tutorial: Date Time解释如何使用Date