Chrome升级至65版本后Selenium WebDriver点击元素报错求助
Chrome 65 + Selenium WebDriver 元素不可点击问题的解决办法
我之前适配Chrome新版本的时候也踩过这个坑,尤其是遮罩层抢点击事件的情况,结合你给出的报错信息,给你几个实用的解决思路:
先等遮罩层消失再操作
报错里明确说overlay_modal这个遮罩层会接收点击,说明你触发点击的时候这个遮罩还没完全消失。用Selenium的显式等待来处理最稳妥,等遮罩层不可见后再去点按钮:WebDriverWait wait = new WebDriverWait(driver, 10); // 等待id为overlay_modal的元素消失,超时10秒 wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("overlay_modal"))); // 再定位并点击BACK按钮 driver.findElement(By.id("BACK")).click();用JavaScript直接触发点击
如果等待后还是不行,大概率是Chrome 65的渲染逻辑和Selenium的模拟点击有冲突。这时候可以绕开原生点击,用JS直接触发元素的点击事件:WebElement backButton = driver.findElement(By.id("BACK")); JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; jsExecutor.executeScript("arguments[0].click();", backButton);确认ChromeDriver版本适配
Chrome 65对应的ChromeDriver版本是2.37(这个版本适配Chrome 64-66版本),如果你的ChromeDriver版本太旧,兼容性问题肯定少不了。赶紧检查下你的驱动版本,不匹配就换成对应版本的。换个更精准的定位方式
有时候单一的id定位可能会受页面动态元素影响,试试结合多个属性的CSS选择器定位,稳定性会更好:driver.findElement(By.cssSelector("a.actionInActionBox#BACK[title='Selection Page']")).click();
内容的提问来源于stack exchange,提问作者krutika
相关产品推荐
相关产品推荐

