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

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

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

函数式编程 2022-10-20 17:12:17
我试图从自定义日期选择器中选择一个日期,但它不起作用。 HTML 与它的外观截图一起粘贴如下。我曾尝试过WebElement dateWidget = driver.findElement(By.className("ui-state-default"));List columns=(List) dateWidget.findElements(By.tagName("ui-state-default"));for (WebElement cell: columns){      //Select 13th Date       if (cell.getText().equals("13")){            cell.findElement(By.linkText("13")).click();            break;      }}甚至尝试等待命令以便找到定位器但没有成功。WebDriverWait(driver,100).until(ExpectedConditions.elementToBeClickable(By.cssSelector两者都不起作用,因为它无法识别元素可以帮助我解决这个问题。如果可能的话,我们甚至可以单击上一个和下一个,以便我们也可以单击一些以前的日期吗?
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

您确实使用错误By.tagName("ui-state-default")ui-state-default是一个类而不是标签,您的代码在下面一无所获:

WebElement dateWidget = driver.findElement(By.className("ui-state-default"));
List columns=(List) dateWidget.findElements(By.tagName("ui-state-default"));

下面的代码在第一个月返回a文本13 :

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();

您也可以使用data-month属性:

driver.findElement(By.xpath("//div[@id='ui-datepicker-div']//td[@data-month='3']/a[.='13']")).click();


查看完整回答
反对 回复 2022-10-20
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

使用以下 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 的元素。


查看完整回答
反对 回复 2022-10-20
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

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