任何人都可以告诉我如何使用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();
}
它不起作用,因为日期字段不是选择列表,首先所有日期字段都不是选择列表
有没有其他方法可以通过点击日期字段从中选择一个随机值来解决这个难题?
答案 0 :(得分:0)
您有两个选择:您可以使用Filter
方法或在所有tablecells中执行for循环。我将使用下面的Filter
因为它需要更少的代码行。
查看日历的代码,您应该看到它是一个基本的HTML表格,并且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
对上述内容进行了测试和测试