我知道图片按钮的ID,但仍然无法点击它

时间:2018-02-22 14:40:53

标签: javascript html selenium selenium-webdriver selenium-chromedriver

我知道图片按钮的ID,但仍然无法点击:

driver.findElement(By.id("its Id")).click()

不能提供网站链接,因为它不是公共网站,而是粘贴指定webelement的HTML。

<div ondragstart="var e=window.event;e.cancelBubble=true;e.returnValue=false;return false;" draggable="false" id="WD0191" ct="B" lsdata="{4:'Add\x20All',10:true,12:'\x2fsap\x2fpublic\x2fbc\x2fur\x2fnw5\x2fthemes\x2f\x7ecache\x2d20171002133000\x2fBase\x2fbaseLib\x2fsap_belize\x2fsvg\x2flibs\x2fSAPGUI\x2dicons.svg\x23s_pagedo'}" lsevents="{Press:[{ResponseData:'delta',ClientAction:'submit'},{}]}" role="button" aria-labelledby="WD0191-arialabel" title="Add All " tabindex="0" ti="0" class="lsButton lsTbarBtnStd urInlineMetricTop urNoUserSelect urBtnRadius  lsButton--onlyImage  urBtnImgBgColor lsButton--design-standard urBtnStd">
  <span id="WD0191-cnt" class="urNoUserSelect lsButton--content lsControl--centeraligned " style="pointer-events:none;">
    <svg data-sap-ls-svg-inline="true" data-sap-ls-svg-inlinehtmlexchange="true" id="WD0191-img" alt="Add All " tabindex="-1" ti="-1" focusable="false" preserveAspectRatio="none" viewBox="0 0 100 100" class="urSvgAppIconMetric urSvgAppIconColorBase urSvgAppIconVAlign urImgBtn lsButton__image" style="nop:nop;margin-top: 0px;;nop:nop;">
      <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#_SAPGUI-icons_1_s_pagedo"></use>
    </svg>
    <span class="lsButton--onlyImage-pusher" style="display:inline-block;width:0;">&nbsp;</span>
  </span>
  <span id="WD0191-arialabel" style="display:none;visibility:hidden;">Add All</span>
</div> 

任何人都可以建议我如何以其他方式点击它吗?

更新:当我尝试使用click()点击它时,它只是将鼠标移动到该元素。所以是的,我确信它能正确识别物品。但不知何故,使用webdriver点击它并没有给出与手动点击时相同的结果。

我认为因为当我使用webdriver点击它时,为这个元素编写的javascript没有被触发,这就是为什么我没有得到想要的结果。

我尝试过使用:

new Actions(driver).moveToElement(input).click().perform();

但没有结果。

更新:按钮的用途以及更大的图片里面的div标签。 此按钮位于一个表格内,该表格在表格的第一部分中分为两部分,您可以根据某些搜索条件获取结果,如果它们相关,则使用此图像按钮将它们复制到表格的第二部分。

3 个答案:

答案 0 :(得分:2)

尝试使用JavascriptExecutor:

    WebElement ele1 = driver.findElement(By.id("ITS ID"));
    JavascriptExecutor clickbtn = (JavascriptExecutor)driver;
    clickbtn.executeScript("arguments[0].click();", ele1);

答案 1 :(得分:0)

你可以尝试使用element.submit() 如果这不起作用,请尝试使用JavaScript executor ...

答案 2 :(得分:0)

我得到了答案,实际上我在表格中提取数据之前单击了图像按钮,因此在有任何数据传递到第二个表之前点击了按钮,这给我的印象是虽然按钮被点击但仍然在点击按钮后数据不会从表一到表二。现在已经添加了显式等待5000并且它按预期工作。

虽然感谢大家的投入。

@Sneha Shinde谢谢..在尝试使用javascript执行器的解决方案时,了解了这个等待问题。

虽然在我的情况下,简单的element.click()在放置等待后也正常工作。