【问题标题】:Date calculator : Selenium Web Driver日期计算器:Selenium Web Driver
【发布时间】:2014-04-21 18:58:38
【问题描述】:
如何通过 selenium 网络驱动程序验证计算的日期是否正确?
请考虑以下示例:
从日期: 01/01/2001
持续时间: 10
截止日期: 2001 年 1 月 10 日
我将指示 selenium 从日期字段和持续时间输入日期。
系统会根据输入的起始日期和持续时间自动计算To date。
我想知道是否有办法验证计算的 To Date 是否正确,因为从日期和持续时间字段输入的值可能会不时更改。
从日期和持续时间字段的静态值也可以 - 我猜。
谢谢!
【问题讨论】:
标签:
java
date
selenium
scripting
selenium-webdriver
【解决方案1】:
您可以使用 java.util 方法做到这一点。我假设您将从测试数据集中将 From Date 和 Duration 作为字符串传递给您的 selenium/webdriver。您必须对每个测试数据执行以下操作:
- 使用 util 方法计算 To Date(getToDate 代码如下)。
- 使用 selenium/webdriver 获取 To Date 中的文本,用于您的测试数据。
- 将 selenium/webdriver 获取的文本与 getToDate 方法返回的文本进行比较。
获取To Date的方法:
public static String getToDate(String fromDate, String duration){
try {
String[] arrFromDate = fromDate.split("/");
int fromMonth = Integer.parseInt(arrFromDate[0])-1;
int fromDay = Integer.parseInt(arrFromDate[1]);
int fromYear = Integer.parseInt(arrFromDate[2]);
int intDuration = Integer.parseInt(duration);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, fromDay);
cal.set(Calendar.MONTH, fromMonth);
cal.set(Calendar.YEAR, fromYear);
cal.add(Calendar.DAY_OF_MONTH, intDuration);
String toDate = sdf.format(cal.getTime());
return toDate;
} catch (NumberFormatException e) {
e.printStackTrace();
return null;
}
要验证的代码:
String appToDate = driver.findElement(By.id("toDate")).getText();
String myToDate = getToDate("01/01/2001","10");
boolean isToDateCorrect = false;
if (appToDate.equals(myToDate )){
isToDateCorrect = true;
}
【解决方案2】:
我建议解析日期而不是拆分字符串
String strDate = "01/01/2001";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date date = simpleDateFormat.parse(strDate);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, 10); // 10 == duration
String outStr = simpleDateFormat.format(calendar.getTime());