1 回答
TA贡献2080条经验 获得超4个赞
用
driver.findElement(By.className(“ui-datepicker-year”));
而不是
driver.findElements(By.className(“ui-datepick-year”));
当您使用驱动程序.find元素(By.className(“ui-日期选取器-年份”))时,您正在将返回元素存储在列表中(我预计有 2 个或更多元素与“ui-日期选取器-年份”具有相同的类名)。因此,如果是这种情况,那么您应该注意,硒的构造函数“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-日期选取器-年”或“ui-日期拾取器-月”,那么您的代码应编写为 -
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 来查找元素。
添加回答
举报