Watin: получить Datetime и выполнить расчет - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть текстовое поле с датой в формате «23.12.2010». Мне нужно взять число 23, используя watin, то есть получить число из текстового поля, я буду использовать его следующим образом.

1.Get datetime 12/23/2010 and get number '23' 
2.substract 2 from 23 and store it somewhere[ie: 23 - 2 = 21] 
3.Insert the new datetime number [ie:12/21/2010 ]

string myDate = browser.TextField(Find.ByName("myTextField")).Value;
DateTime time =  = new DateTime();
time2 = time - 2;
browser.TextField(Find.ByName("myTextField")).TypeText(time2);

Возможно ли это? Или я должен искать другой способ? Попросите пользователя вставить данные.

Ответы [ 4 ]

5 голосов
/ 28 февраля 2011

Вы должны использовать DateTime.Parse, DateTime.TryParse, DateTime.ParseExact или DateTime.TryParseExact для разбора текста на DateTime.

Если сбой анализа указывает на сбой в коде где-то (что, вероятно, имеет место здесь, учитывая, что это тест) Я подозреваю, что DateTime.ParseExact является наиболее подходящим подходом, предоставляя ожидаемый формат, культуру и т. д.

2 голосов
/ 28 февраля 2011

если вы хотите вычесть 2 дня из даты, я бы сделал это так:

DateTime dt = DateTime.Parse(myDate)-TimeSpan.FromDays(2); 
//its steps 1,2 & 3 in one easy to read line :)

Это, конечно, если вы уверены, что строка, которая у вас есть, является действительной датой. Если это не так, то вы должны сделать то, что рекомендует Skeet, который использует сначала попытку анализа, проверяет, является ли возвращаемое значение истинным, а если да, то делает все остальное, а если нет, отправляет ошибку сообщение.

0 голосов
/ 26 апреля 2011

Попробуйте получить значение даты в виде строки Преобразовать его в datetime и использовать AddDays мы можем использовать отрицательное или положительное значение И вставьте его в текстовое поле

string myDate = this.Elements.textfield.Value;
DateTime dt = Convert.ToDateTime(myDate);
DateTime dtNew = dt.AddDays(-3);
this.Elements.ChangeDateActive.TypeText(dtNew.ToShortDateString());

Вот и все, спасибо

0 голосов
/ 28 февраля 2011

рассмотрите возможность написания

DateTime dt = Convert.ToDateTime(myDate);
DateTime dtNew = new DateTime(dt.Year, dt.Month, dt.Day - 2);
browser.TextField(Find.ByName("myTextField")).TypeText(dtNew.ToShortDateString());
...