selenium在Firefox浏览器中遇到org.openqa.selenium.ElementNotInteractableException问题解析

背景:在公司网站进行测试时,登陆后有个侧边栏弹出,需要手动关闭,不然 后续会遮挡其他元素。

侧边栏类似下面的图片

写测试用例代码时,思路就是登陆之后,点击右上角×号进行关闭,代码如下:

Thread.sleep(3000);
campaignPage.closeManagerBox();
具体关闭代码如下

        WebElement e = driver.findElement(By.xpath("//*[@id=\"cm_more\"]//a[@class=\"weiboyiTool weiboyiTool_close fr js_cm_close\"]"));
        e.click();

登陆之后等待3s,再进行关闭侧边栏操作,然后使用chrome浏览器执行测试用例时,执行成功。但是同样的代码在Firefox浏览器上执行时,却报错,报错信息如下:


解决方案:

通过查询资料和亲身试验,有以下几种方法:

1、增加等待时间。(成功)

Thread.sleep(3000);
原来是等待3s,我设置成等待10s,执行成功。但是这种方法有个弊端,等待时间不好确定,而且会影响测试用例的执行速度。

2、执行JS语句进行关闭。(Firefox和chrome均失败,未能成功关闭弹框)

WebElement e = driver.findElement(By.xpath("//*[@id=\"cm_more\"]//a[@class=\"weiboyiTool weiboyiTool_close fr js_cm_close\"]"));
//e.click();
((JavascriptExecutor)driver).executeScript("arguments[0].click;",e);
3、使用Actions进行操作。(Firefox全失败,未能成功关闭;chrome语句1和2可以成功关闭,3不行)

Actions action = new Actions(driver);
//1
action.moveToElement(e).click().perform();
//2
action.moveToElement(e).click().build().perform();
//3
action.moveToElement(e).clickAndHold(e).build().perform();

1、2、3三种方法。有很多同行的文章说解决了问题,但我试验了很多次都没有成功,请大家自行验证。

版本信息:geckodriver-v0.19.1-win64、Firefox是58.0.1

因为Firefox进行了大的更新,不知和这个问题是否有关,待后续验证,欢迎同行一起探讨。

还有另外一个疑惑点,为什么我设置的隐性等待没有起作用?



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值