为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用硒处理年份和月份下拉列表?

如何使用硒处理年份和月份下拉列表?

慕神8447489 2022-09-21 21:35:16
任何人都可以指导我,如何使用Selenium中的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 回答

?
犯罪嫌疑人X

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 来查找元素。


查看完整回答
反对 回复 2022-09-21
  • 1 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信