【问题标题】:How to click the Calendar image icon using selenium-webdriver and Java如何使用 selenium-webdriver 和 Java 单击日历图像图标
【发布时间】:2020-10-04 11:26:07
【问题描述】:

我尝试了很多方法,但对我没有用。请帮忙解决这个问题

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

Javascript 执行器:

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

【问题讨论】:

  • @Anyone...请在上面帮助我

标签: java selenium xpath css-selectors webdriverwait


【解决方案1】:

尝试以下方法:

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

【讨论】:

  • 您好 frianH,感谢您的回复.. 我也尝试了上述两种方法,但没有用。
  • @Satya 可以分享网站吗?
  • @FrianH..由于公司安全原因无法分享网站
【解决方案2】:

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

【讨论】:

  • 我试过这个..但对我不起作用。显示没有错误和失败
  • @DebanjanB...与该元素交互的任何其他方式
  • @Satya 您只告诉我们它对我不起作用,但您没有告诉我们出了什么问题或共享错误堆栈跟踪。所以很难构建一个规范的答案。
  • 这些点击语句不会引发任何错误
  • 当我使用 Javascriptexecor 突出显示元素时,如果我们编写 click 方法,它会突出显示但不点击...。真的在等待解决这个问题的建议...r
猜你喜欢
  • 2017-12-26
  • 2016-08-07
  • 2018-09-22
  • 2018-08-04
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 2017-05-21
  • 2016-06-28
相关资源
最近更新 更多