Selenium 报错:Element is not clickable at point的解决办法

本文详细解析了在使用Selenium进行自动化测试时,遇到的元素点击被遮挡问题及两种有效解决方法。一是通过等待遮挡元素消失,二是刷新页面使遮挡元素消失,再等待目标元素可点击。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天一同学在写Selenium Java脚本时遇到一个问题,登录进入系统之后,要点击左侧的一个菜单,但是执行到该语句时报下面的错误:

Firefox中报错如下:
org.openqa.selenium.ElementClickInterceptedException: Element <div class="el-submenu__title"> is not clickable at point (115,358) because another element <div class="el-loading-mask is-fullscreen el-loading-fade-leave-active el-loading-fade-leave-to"> obscures it

错误的意思是:无法点击这个元素,因为被另一个div掩盖(obscure)住了。

Chrome 中报错如下:
org.openqa.selenium.WebDriverException: unknown error: Element <div class="el-submenu__title" style="padding-left: 20px;">...</div> is not clickable at point (115, 358). Other element would receive the click: <div class="el-loading-mask is-fullscreen el-loading-fade-leave-active el-loading-fade-leave-to" style="z-index: 2000;">...</div>
  (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();

********************************************************************************************************

近期我会在博客中系统的更新一些关于Selenium的文章,也请大家多多关注下我的视频课程:

入门:基于Java的Selenium3自动化测试完整教程

高级:Selenium Java高级架构课程

*********************************************************************************************************

阅读更多精彩文章,请大家关注我的测试公众号:火烈鸟测试

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YOYO测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值