如何使用selenium-webdriver和Java单击日历图像图标

问题描述 投票:0回答:2

我尝试了很多方法,但对我没有用。请对此提供帮助

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();
        }
java selenium xpath css-selectors webdriverwait
2个回答
0
投票

由于该元素是启用了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();
    

0
投票

尝试以下方法:

  1. 使用Actions

    WebElement element = driver.findElement(By.cssSelector("td img#ctl00_cntMainContent_imgStartDate"));
    Actions actions = new Actions(driver);
    actions.moveToElement(element)
        .click(element)
        .build()
        .perform();
    
  2. 使用JavascriptExecutor

    WebElement element = driver.findElement(By.cssSelector("td img#ctl00_cntMainContent_imgStartDate"));
    ((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);
    
© www.soinside.com 2019 - 2024. All rights reserved.