ElementNotInteractableException:元素不可交互:自升级到 chromedriver 83 后出现元素大小为零

2024-03-23

我使用以下 docker 映像来运行我的黄瓜测试:

https://hub.docker.com/r/selenium/standalone-chrome/ https://hub.docker.com/r/selenium/standalone-chrome/

不幸的是,从今天开始,每当我运行测试时,似乎都会出现以下错误。它们出现在每次测试开始时。我在页面上做什么并不重要。

**13:38:26 [exec] org.openqa.selenium.ElementNotInteractableException:元素不可交互:元素大小为零

13:38:26 [执行](会话信息:chrome=83.0.4103.61)**

我进行了一些挖掘,发现 chromedriver 版本已从 81 更新到 83。我设法通过使用具有 chromedriver 81 的 docker hub 链接中的较旧 docker 映像来解决此问题。但如果我尝试再次使用 chromedriver 83,它将不行。

有人遇到过这种情况么?由于更新,我需要添加新的 chrome 选项吗?


该问题的根本原因是 Chrome 不会滚动到视口之外的元素。相反,Chrome 会尝试在查看区域之外单击它。这就是问题出现的原因。这绝对是 Chrome 83 的问题,因为我在 Chrome 81 上没有遇到过这个问题。

此外,我在 Windows 机器上没有这样的问题,它仅在 Linux 上重现(我使用的是 selenoid docker 映像)。

通过 JS 单击的解决方案不是最佳选择,因为通过 JS,您可以单击任何地方,即使是不可单击的元素(例如与其他对象重叠)。这是一个不安全的操作。

相反,我建议在单击之前和本机单击()之后滚动到该元素;它会完美地工作。

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].scrollIntoView(true);", element);    
element.click();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElementNotInteractableException:元素不可交互:自升级到 chromedriver 83 后出现元素大小为零 的相关文章

随机推荐