C# 如何在任何时候运行测试时使用system.DateTime从日期选择器中选择有效日期

C# 如何在任何时候运行测试时使用system.DateTime从日期选择器中选择有效日期,c#,selenium-webdriver,datepicker,C#,Selenium Webdriver,Datepicker,我需要在自动测试中从日期选择器中选择一个有效日期。我对C#、Selenium和Visual Studio非常陌生。我目前的代码是: DriverGC.FindElement(By.CssSelector(".formElement.jsDatePicker")).Click(); DriverGC.FindElement(By.CssSelector(".datePicker_list li[data-day='25']")).Click(); 这可以正常工作,例如,只要25是有效的。如果我

我需要在自动测试中从日期选择器中选择一个有效日期。我对C#、Selenium和Visual Studio非常陌生。我目前的代码是:

DriverGC.FindElement(By.CssSelector(".formElement.jsDatePicker")).Click();
DriverGC.FindElement(By.CssSelector(".datePicker_list li[data-day='25']")).Click(); 
这可以正常工作,例如,只要25是有效的。如果我在这个月的26号运行测试,那么下一个可用的25号在下个月,因此无效,我的测试失败


我是否可以输入一行代码,使用我的系统日期,然后说+2,然后在日期选择器中选择这个作为日期,这样无论我在当月运行测试时,它都会选择一个有效日期

您可以使用以下语法:

int currentdayOfTheMonth = DateTime.Now.Day;
string cssLocator = string.Format(".datePicker_list li[data-day='{0}']", currentdayOfTheMonth);
DriverGC.FindElement(By.CssSelector(cssLocator)).Click();
这段代码将首先获取当月的当前日期,构建css定位器,然后找到元素。如果要加一天或减一天,可以使用DateTime的AddDays方法

int currentdayOfTheMonth = DateTime.Now.AddDays(1).Day;

如果我理解正确,您希望在日期选择器中选择任何有效日期,对吗

我建议先创建一个包含所有有效日期的数组,然后随机选择其中一个。这是Java代码,但C#语法应该类似

//create list of all valid elements
List<WebElement> elements = driver.findElements(By.cssSelector("selectorForValidDates"));  

//get a random index of the list
int i = new Random().nextInt(elements.size());  

//click on valid element
elements.get(i).click();
//创建所有有效元素的列表
列表元素=driver.findElements(By.cssSelector(“selectorForValidDates”);
//获取列表的随机索引
int i=new Random().nextInt(elements.size());
//单击有效元素
元素。获取(i)。单击();

在元素上具有适当的属性以方便选择它们是很重要的。在所有可选择的日期上,如
class=“validDate”
。这样,您的css选择器可能看起来像
.datePicker\u list li.validDate
,它只返回您实际可以使用的元素。

非常感谢您的回复,这种方法和其他方法都有效!Thaks非常感谢您的回复,这种方法和另一种方法都有效!出于好奇,由于我不熟悉
DateTime
和C#,如果当前日期是一个月的最后一天,那么
DateTime.Now.AddDays(1).Day
将返回什么?不,这将导致测试失败,因为在我的日期选择器上,它不会自动显示下个月的有效日期。目前,我不会在每月的最后一天运行测试,但我希望对站点上的日期选择器进行开发更改,以显示下个月的有效日期,这将否定此问题。(了解一下Microsoft Outlook如何在右上角显示日历。)