У вас есть пара вариантов: вы можете использовать метод Filter
или выполнить цикл 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 . Это должно быть проверено и RegExs обновлены по мере необходимости.
Примечание : после нажатия на день класс CSS изменится на * cell_selected *.
Выше проверено и хорошо с использованием WatiN 2.1 и IE8