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

任何人都可以指导我,如何使用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");

}


慕神8447489
浏览 64回答 1
1回答

犯罪嫌疑人X

用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 =&nbsp; driver.findElements(By.className("ui-datepicker-&nbsp;year"));Select selectYear= new Select(NomDOBYear.get(0));//first element of the listselectYear.selectByVisibleText("1991");WebElement NomDOBMonth = driver.findElement(By.className("ui-&nbsp;datepicker-month"));// you got the class name wrong hereSelect selectMonth= new Select(NomDOBMonth);selectMonth.selectByVisibleText("Nov");否则,如果整个 DOM 中只有 1 个元素的类名为“ui-日期选取器-年”或“ui-日期拾取器-月”,那么您的代码应编写为 -WebElement NomDOBYear =&nbsp; 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 来查找元素。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java