代码之家  ›  专栏  ›  技术社区  ›  Nagarjuna Reddy

无法在chrome中单击按钮,即使web元素的id或定位器在页面上是唯一的和可见的

  •  0
  • Nagarjuna Reddy  · 技术社区  · 8 年前

    对于该页面, https://dev.simplify360.com/ ,登录按钮 "id=rp" 使用硒2.53.1和3。

    但是现在运行它,得到异常 "element not clickable" .

    无法理解为什么这是不可见的。我可以用钥匙实现这一点。在mac上返回。因为这不是标准的方法,试图找出它工作时出现了什么问题。

    Chrome版本:54.0.2840.98(64位)

    按钮代码:

    <div>
    
    <input class="submit btn btn-block btn-primary" value="Login" id="rp" style="margin-top: 12px; margin-right: 17px; margin-bottom: 7px;" type="submit">
    
    </div>
    

    例外:

    org.openqa.selenium.WebDriverException: unknown error: Element is not clickable at point (888, 456). Other element would receive the click: <div class="row">...</div>
      (Session info: chrome=54.0.2840.98)
      (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.1 x86_64) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 33 milliseconds
    Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
    System info: host: 'nagarjunaMBP.local', ip: '172.16.1.3', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.1', java.version: '1.7.0_71'
    Session ID: 550d02f66708962a5eebcd76e4440774
    Driver info: org.openqa.selenium.chrome.ChromeDriver
    Capabilities [{platform=MAC, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=/var/folders/g4/dylg4g7s7wbdtg_f6mtzj8m00000gn/T/.org.chromium.Chromium.YxbtCE, chromedriverVersion=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1)}, networkConnectionEnabled=false, rotatable=false, locationContextEnabled=true, mobileEmulationEnabled=false, version=54.0.2840.98, pageLoadStrategy=normal, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, webStorageEnabled=true, nativeEvents=true, hasTouchScreen=false, applicationCacheEnabled=false, takesScreenshot=true}]
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   Shoaib Akhtar    8 年前

    只有在使用chrome驱动程序时才会出现此问题,因为chrome浏览器使用点位置。当元素位置不固定并且我们试图对该特定元素执行某些操作时,将导致错误为“selenium.common.exceptions”。WebDriverException-元素在点(xx,xx)处不可单击。

    请尝试以下代码。

    driver.get("https://dev.simplify360.com/");
    WebElement ele = driver.findElement(By.id("rp"));
    ((JavascriptExecutor)driver).executeScript("window.scrollTo(0,"+ele.getLocation().x+")");
    ele.click();
    

    有关此问题的更多详细信息,请阅读文档 here

        2
  •  1
  •   Pang Lokesh Desai    7 年前

    试试这个:

    WebElement btn = driver.findElement(By.id("rp"));
    btn.submit();
    

    尝试使用 submit() 而不是 click() 因为元素的类型是提交,而不是按钮。

    <input type="submit" ... >
    

    代码在Chrome上运行良好。