无法单击GUI中的“添加”按钮(错误:其他元素将收到点击)

时间:2017-05-17 05:21:02

标签: java selenium selenium-webdriver automated-tests

我试图点击'Add'按钮,但收到以下错误消息:

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown 
error: Element <img src="theme/catalogSiemens/images/btn/btnBackCatalog.png" 
alt="Zurück" title="Zurück"> is not clickable at point (53, 57). Other 
element would receive the click: <div id="updateIndicator" 
class="waitVisible"></div>
(Session info: chrome=58.0.3029.110)
(Driver info: chromedriver=2.29.461591 
(62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 10.0.10586 
x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 581 milliseconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'P3B-BQHT7R1', ip: '10.222.132.78', os.name: 'Windows 
10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_111'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, 
mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome=
{chromedriverVersion=2.29.461591 (62ebf098771772160f391d75e589dc567915b233)

我的代码是:

driver.findElement(By.linkText("CMT Desigo CC")).click();
    driver.findElement(By.linkText("Basis")).click();
    driver.findElement(By.xpath("//img[@alt='In den Einkaufswagen 
legen']")).click();
    System.out.println("Item 1 added");
driver.findElement(By.xpath("//img[@alt='Zurück']")).click();

HTML是:

<a onclick="      if (document.referrer && 
document.referrer.indexOf('cameleonUI') > -1){if 
(Prototype.BrowserFeatures.isAndroid) {history.back();} else {if 
(document.referrer.startsWith(document.baseURI)) 
{location.href=document.referrer; } else {/* do nothing, too risky 
*/}}}else{goBack('close.do?S_moduleContextId=cat');}; return false;
                     "
                    id="tile282_0"
                    actionName="BACK"
                        href="#"
                        target="_blank"
                    class=""  >  <img 
src="theme/catalogSiemens/images/btn/btnBackCatalog.png" alt="Zurück" 
title="Zurück" /> </a>

任何建议将不胜感激。 如果需要更多信息,请与我们联系。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

从您获得的异常中我可以理解您的页面正在加载或某个div正在掩盖您的div元素。为了避免这种情况,你可以等到你的页面加载(如果加载页面时出现一些加载器使用流畅的等待那个加载器元素,直到该元素不可见)或者至少一些应用程序一次加载多次。因此,对于那种情况,线程睡眠。如果有任何问题,请告诉我。

答案 1 :(得分:1)

我认为之前的解决方案解决了这个问题但是为了不再随机地再次出现这种行为,你必须稍微增加等待时间并重新运行一次以确保等待时间足够每次运行代码时页面元素加载都不一样

你可以通过将10增加到15或20秒来实现:

 WebDriverWait wait2 = new WebDriverWait(driver, 20);
    WebElement element2 = wait2.until(ExpectedConditions.elementToBeClickable(By.xpath("//img[@alt='Zurück']")));
    element2.click();

答案 2 :(得分:0)

以下是您的问题的答案:

从错误堆栈跟踪中可以清楚地看出,元素存在于DOM中但不可点击。这意味着有一个叠加层。因此,为了解决这种情况,您必须使用ExplicitWait,如下所示:

    WebDriverWait wait2 = new WebDriverWait(driver, 10);
    WebElement element2 = wait2.until(ExpectedConditions.elementToBeClickable(By.xpath("//img[@alt='Zurück']")));
    element2.click();

如果这回答你的问题,请告诉我。