我尝试了很多方法,但对我没有用。请对此提供帮助
DOM区域:
<td>
<input name="ctl00$cntMainContent$txtStartDate" type="text" id="ctl00_cntMainContent_txtStartDate" class="clsTextBox" onkeydown="javascript:return false;" onpaste="javascript:return false;">
<img id="ctl00_cntMainContent_imgStartDate" src="../Images/calendar.gif" align="absbottom">
</td>
以下是我尝试过的区域,[常规点击方法:
driver.findElement(By.xpath("//*[@id='ctl00_cntMainContent_imgStartDate']")).click();
Javascriptexecutor:
public void Javascript_Click()
{
JavascriptExecutor executor= (JavascriptExecutor)driver; executor.executeScript("document.getElementById('ctl00_cntMainContent_imgStartDate').click()");
}
动作:
public void Action_Click()
{
Actions act = new Actions(driver); act.moveToElement(driver.findElement(By.id("ctl00_cntMainContent_imgStartDate"))).click().build().perform();
}
由于该元素是启用了JavaScript的元素,因此对于元素上的click()
,您需要将WebDriverWait用作elementToBeClickable()
,并且可以使用以下Locator Strategies之一:
cssSelector:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("td img[id$='cntMainContent_imgStartDate'][src$='Images/calendar.gif']"))).click();
xpath:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//td//img[contains(@id, 'cntMainContent_imgStartDate') and contains(@src, 'Images/calendar.gif')]"))).click();
尝试以下方法:
使用Actions
WebElement element = driver.findElement(By.cssSelector("td img#ctl00_cntMainContent_imgStartDate"));
Actions actions = new Actions(driver);
actions.moveToElement(element)
.click(element)
.build()
.perform();
使用JavascriptExecutor
WebElement element = driver.findElement(By.cssSelector("td img#ctl00_cntMainContent_imgStartDate"));
((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);