我有一个包含4个日历小部件的表单。所有小部件的html源都相同。
<div class="grid_12">
<td class="wikicell">
<div class="Item">
<div class="Value">
<input type="hidden" id="Submit_Date$_type" value="Date,99/99/9999">
<input id="Submit_Date" size="40" value="" type="text">
<a href="javascript:" class="Calendar">
<img src="transparent.gif" class="Placeholder" tabindex="-1" align="absmiddle">
</a>
</div>
</div>
</td>
我可以使用以下代码找到第一个日历:
driver.findElement(By.cssSelector("div.grid_12 img.Placeholder"), 15).click();
但是当我尝试使用nth-child(2)/(3)或(4)找到第2,第3和第4个日历时,我得到一个“无法找到元素:{”方法“:”css选择器“, “selector”:“div.grid_12 img.Placeholder:nth-child(2)”}
我也试过“a.Calendar”,“div.grid_12 img”也适用于第一个日历。当与“nth-child(1)”一起使用时,这3个选择器可以成功点击并打开第一个日历小部件,但不能用于下一个3。
我在第一个日历关闭后使用了Thread.sleep(3000),但最终得到了同样的错误。
我使用findElements()方法获取所有日历小部件,并使用size()仔细检查以检查WebDriver是否正在查找所有日历元素。结果是预期的4。
我没有正确使用'n-child'吗?
答案 0 :(得分:4)
我首先找到包含这些日历图标的表单/表,并在此元素上调用findElement()作为查找相应日历的参考。这是解决方案 -
WebElement form = uiHelper.waitForElementPresent(By.cssSelector("table.left tbody"), 15);
//Enter time
form.findElement(By.cssSelector("tr:nth-child(3) td:nth-child(2) img")).click();
form.findElement(By.cssSelector("tr:nth-child(4) td:nth-child(2) img")).click();