任何人都可以指导我,如何使用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");
}
答案 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查找元素。