我试图从自定义日期选择器中选择一个日期,但它不起作用。 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();
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 的元素。
添加回答
举报
0/150
提交
取消