Selenium Java:无法从日期选择器中选择日期

Selenium Java:无法从日期选择器中选择日期,java,selenium,selenium-webdriver,webdriver,Java,Selenium,Selenium Webdriver,Webdriver,我试图从自定义日期选择器中选择一个日期,但它不起作用。 HTML与它的外观截图一起粘贴,如下所示 HTML: 甚至尝试等待命令以便找到定位器,但没有成功 WebDriverWait(驱动程序,100).until(预期条件).ElementToBickable(By.cssSelector 两者都不起作用,因为它无法识别元素。有人能帮我吗。 如果可能,我们甚至可以单击“上一个”和“下一个”,以便我们也可以单击一些以前的日期吗?您使用.tagName(“ui状态默认值”)时出错,ui状态默认值

我试图从自定义日期选择器中选择一个日期,但它不起作用。

HTML与它的外观截图一起粘贴,如下所示

HTML:

甚至尝试等待命令以便找到定位器,但没有成功

WebDriverWait(驱动程序,100).until(预期条件).ElementToBickable(By.cssSelector

两者都不起作用,因为它无法识别元素。有人能帮我吗。
如果可能,我们甚至可以单击“上一个”和“下一个”,以便我们也可以单击一些以前的日期吗?

您使用.tagName(“ui状态默认值”)时出错,ui状态默认值是一个类而不是标记,下面的代码什么也找不到:

WebElement dateWidget = driver.findElement(By.className("ui-state-default"));
List columns=(List) dateWidget.findElements(By.tagName("ui-state-default"));
下面的代码在第一个月返回带有文本的a13

driver.findElement(By.xpath("//div[@id='ui-datepicker-div']//a[.='13']")).click();
如果日期选择器使用
findElements
,则可以选择上个月:

List<WebElement> dates = driver.findElements(By.xpath("//div[@id='ui-datepicker-div']//a[.='13']"));
dates.get(2).click();

您使用.tagName(“ui状态默认值”)时出错,
ui状态默认值是类而不是标记,下面的代码找不到任何内容:

WebElement dateWidget = driver.findElement(By.className("ui-state-default"));
List columns=(List) dateWidget.findElements(By.tagName("ui-state-default"));
下面的代码在第一个月返回带有文本的a13

driver.findElement(By.xpath("//div[@id='ui-datepicker-div']//a[.='13']")).click();
如果日期选择器使用
findElements
,则可以选择上个月:

List<WebElement> dates = driver.findElements(By.xpath("//div[@id='ui-datepicker-div']//a[.='13']"));
dates.get(2).click();

使用下面的xpath,您可以轻松地解决问题,而无需任何麻烦

//table[@class='ui-datepicker-calendar']//td[@data-month='2']//a[.='15']
在这里,我选择了月份2和日期15来选择日期。您可以更改数据月份来选择另一个。您也可以将其设置为动态

我已经在chrome控制台和我的自动化脚本中测试过了,它对我来说运行良好

要验证在chrome控制台中粘贴以下代码并点击inter>

$x("//table[@class='ui-datepicker-calendar']//td[@data-month='2']//a[.='15']")

它将返回第二个月的日期15的元素。

使用以下xpath,您可以轻松地解决问题,而无需任何麻烦

//table[@class='ui-datepicker-calendar']//td[@data-month='2']//a[.='15']
在这里,我选择了月份2和日期15来选择日期。您可以更改数据月份来选择另一个。您也可以将其设置为动态

我已经在chrome控制台和我的自动化脚本中测试过了,它对我来说运行良好

要验证在chrome控制台中粘贴以下代码并点击inter>

$x("//table[@class='ui-datepicker-calendar']//td[@data-month='2']//a[.='15']")

它将返回第二个月的日期15元素。

发布页面的HTML,而不是代码的屏幕截图。我也添加了HTML@SAhmed。还有更多的日期选择器代码。请附上日期选择器的完整HTML,可能有一个或两个父项node@SAhmed我在里面又加了一些,我觉得你是在显示的HTML上使用一些javascript-这可能就是为什么只查看HTML在这里不起作用的原因…发布页面的HTML而不是代码的屏幕截图。我也添加了HTML@SAhmed。还有更多关于日期选择器的代码。请附上日期选择器的完整HTML,可能有一个或两个父项node@SAhmed 我在其中添加了更多的内容。在我看来,您在显示的HTML之上使用了一些javascript-这可能就是为什么只查看HTML在这里不起作用的原因…对于第二个,它说,如果再次删除类型参数,则需要执行一个cast(List)驱动程序,如List dates=(List)driver.findElements(By.xpath(//div[@id='ui-datepicker-div']//a[.='13']”);它不接受.get(3)
.get(3)
是错误的,最后一个索引是2。可以使用以下方法获取最后一个:
dates.get(dates.size()-1)。单击();
类型WebDriver中的方法get(String)不适用于newpackage1.flightdeckau.main(flightdeckau.java:91)的参数(int)当通过线程“main”java.lang中的eclipseException运行它时。错误:未解决的编译问题:类型WebDriver中的方法get(String)不适用于第二个线程的newpackage1.flightdeckau.main(flightdeckau.java:91)中的参数(int),它表示如果再次执行强制转换,则删除类型参数(列表)驱动程序需要像List dates=(List)driver.findElements(By.xpath(“//div[@id='ui-datepicker-div']//a[.='13']”)那样执行);它不接受.get(3)
.get(3)
是错误的,最后一个索引是2。可以使用:
dates.get(dates.size()-1)来获取最后一个。单击();
方法get(String)在通过线程“main”java.lang中的eclipseException运行时,类型WebDriver不适用于newpackage1.flightdeckau.main(flightdeckau.java:91)中的参数(int)。错误:未解决的编译问题:类型WebDriver中的方法get(String)不适用于参数(int)位于newpackage1.flightdeckau.main(flightdeckau.java:91)