如何使用Selenium处理年份和月份的下拉菜单?

时间:2019-04-05 06:54:45

标签: java selenium-webdriver

任何人都可以指导我,如何使用Selenium中的Java选择年份和月份下拉列表吗?

使用了下面提到的代码,但是没有用。

Java代码:

{
List<WebElement> NomDOBYear =  driver.findElements(By.className("ui-datepicker-year"));
Select selectYear= new Select((WebElement) NomDOBYear);
selectYear.selectByVisibleText("1991");


WebElement NomDOBMonth = (WebElement) driver.findElements(By.className("ui-datepicker-year"));
Select selectMonth= new Select(NomDOBMonth);
selectMonth.selectByVisibleText("Nov");
}

1 个答案:

答案 0 :(得分:0)

使用

  

driver.findElement(By.className(“ ui-datepicker-year”));

代替

  

driver.findElements(By.className(“ ui-datepicker-year”));

当您使用driver.findElements(By.className(“ ui-datepicker-year”))时,您会将返回元素存储在列表中(我希望有2个或更多元素的className与“ ui- datepicker-year”)。 因此,如果是这种情况,则应注意,硒的构造函数“ Select”类将“ WebElement”作为参数,该参数可以是列表中存储的第一个元素或任何元素。 然后,您的代码应写为-

List<WebElement> NomDOBYear =  driver.findElements(By.className("ui-datepicker- 
year"));
Select selectYear= new Select(NomDOBYear.get(0));//first element of the list
selectYear.selectByVisibleText("1991");


WebElement NomDOBMonth = driver.findElement(By.className("ui- 
datepicker-month"));// you got the class name wrong here
Select selectMonth= new Select(NomDOBMonth);
selectMonth.selectByVisibleText("Nov");

否则,如果整个DOM中只有1个元素的类名称为“ ui-datepicker-year”或“ ui-datepicker-month”,则您的代码应写为-

WebElement NomDOBYear =  driver.findElement(By.className("ui-datepicker-year"));
Select selectYear= new Select(NomDOBYear);
selectYear.selectByVisibleText("1991");


WebElement NomDOBMonth = driver.findElement(By.className("ui-datepicker-month"));
Select selectMonth= new Select(NomDOBMonth);
selectMonth.selectByVisibleText("Nov");

我仍然建议使用XPath查找元素。