最近在写Selenium Java脚本时遇到一个问题,登录进入系统之后,要点击左侧的一个菜单,但是执行到该语句时报下面的错误:
Firefox中报错如下:
org.openqa.selenium.ElementClickInterceptedException: Element
is not clickable at point (115,358) because another elementobscures it
错误的意思是:无法点击这个元素,因为被另一个div掩盖(obscure)住了。
Chrome 中报错如下:
org.openqa.selenium.WebDriverException: unknown error: Element
...
is not clickable at point (115, 358). Other element would receive the click:
...
(Session info: chrome=67.0.3396.99)
错误的意思是:无法点击这个元素,另外一个div元素接收了这个点击。
经分析调试,以下方法可以解决此类问题。
解决方法一:
思路:先使用invisibilityOf等待掩盖的div消失不见,再使用elementToBeClickable等待要点击的元素达到可点击的状态。
示例:
//要点击的左侧菜单元素
WebElement LeftMenu = driver.findElement(By.xpath("xpath"));
//掩盖的div元素
WebElement ObscureDiv = driver.findElement(By.xpath("//div[@class='el-loading-mask is-fullscreen el-loading-fade-leave-active el-loading-fade-leave-to']"));
//使用显示等待,等待掩盖的div消失
WebDriverWait wait = new WebDriverWait(driver,60);
wait.until(ExpectedConditions.invisibilityOf(ObscureDiv));
//等待左侧菜单到可点击状态
wait.until(ExpectedConditions.elementToBeClickable(LeftMenu ));
//之后再执行点击
LeftMenu .click();
解决方法二:
思路:因为掩盖的div可能会在进行一些操作后,会消失,所以登录后执行一个页面刷新的操作,此div即可消失。
再等待左侧菜单到可点击状态即可。
示例:
//登录之前的代码
//登录后加时间等待,并且进行一次页面刷新
Thread.sleep(3000);
driver.navigate().refresh();
//要点击的左侧菜单元素
WebElement LeftMenu = driver.findElement(By.xpath("xpath"));
//等待左侧菜单到可点击状态
WebDriverWait wait = new WebDriverWait(driver,60);
wait.until(ExpectedConditions.elementToBeClickable(LeftMenu ));
//之后再执行点击
LeftMenu .click();
最后,绵薄之力 感谢每一个认真阅读我文章的人,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
资料获取方式:
文章来源:https://www.toymoban.com/news/detail-757924.html
文章来源地址https://www.toymoban.com/news/detail-757924.html
到了这里,关于Selenium报错:Element is not clickable at point的解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!