Selenium 元素操作的解决方法 (元素存在,且可点击;但运行报错提示不可点击)

周小丽 · 2017年01月09日 · 最后由 arkin 回复于 2017年01月09日 · 1297 次阅读

今天在写测试脚本时,元素 click 失败,chrome 上提示 Element is not clickable at point (1096, 26)。前提 webElement.isDisplayed() 是 True 的。后台发现原来该元素在视图之外,可以调用 JS 方法解决:

WebElement webElement = driver.findElement(By.className("hytext"));
System.out.println(webElement.isDisplayed());
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", webElement);
webElement.click();

还有另外一种情况也会导致此现象,就是 click 前出现弹出层,如加载层,需等待加载层完毕后执行 click 即可:

WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.elementToBeClickable(By.id("hytext")));

共收到 1 条回复 时间 点赞

我之前也是这样处理,但是感觉 js 调用不稳定,有时还是捕获元素; 最后使用 sleep 简单粗暴;

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册