如何使用watin框架从日期字段中选择日期

时间:2011-09-28 15:47:40

标签: c# testing c#-4.0 watin

任何人都可以告诉我如何使用WatiN

自动选择这些日期字段中的日期

http://www.meanfreepath.com/javascript_calendar/livedemo.html)我以此网站为例。

我试图选择一个随机日期为

foreach (SelectList sl in lists)
{
    OptionCollection oc = sl.Options;
    temp = random.Next(oc.Count);
    oc[temp].Select();
}

它不起作用,因为日期字段不是选择列表,首先所有日期字段都不是选择列表

有没有其他方法可以通过点击日期字段从中选择一个随机值来解决这个难题?

1 个答案:

答案 0 :(得分:0)

您有两个选择:您可以使用Filter方法或在所有tablecells中执行for循环。我将使用下面的Filter因为它需要更少的代码行。

查看日历的代码,您应该看到它是一个基本的HTML表格,并且CSS类可以很好地定义单元格。

示例的目标

在当月选择随机日

<强>伪代码

  • 转到页面
  • 计算当月的天数
  • 根据当月的天数生成随机数
  • 通过过滤CSS类并将预期文本作为随机数
  • 来选择日期

实际代码

Settings.HighLightElement = false;   //If you don't do this, the calendar colors won't work correctly.
ie = new IE(true);

ie.GoTo("http://www.epoch-calendar.com/javascript_calendar/livedemo.html");
ie.Table("bas_cal_calendar").WaitUntilExists(5);

int totalDaysInMonth = ie.Table("bas_cal_calendar").TableCells.Filter(Find.ByClass(new Regex(@"wkday|wkend|wkday\scurdate"))).Count;

Random random = new Random();
int randomDay = random.Next(1,totalDaysInMonth + 1);

ie.Table("bas_cal_calendar").TableCell(Find.ByClass(new Regex(@"wkday|wkend|wkday\scurdate")) && Find.ByText(randomDay.ToString())).Click();

注意:我猜猜当前日期是周末的CSS课程将是 wkend curdate 。这需要进行验证,并根据需要更新RegEx。 注意:点击一天后,CSS类更改为* cell_selected *。

使用WatiN 2.1和IE8

对上述内容进行了测试和测试