点击问题

“元素不可点击”错误

点击 ChromeDriver 时,系统会模拟在元素的第一个客户端矩形(如果没有第一个客户端矩形,则为边界客户端矩形)中间的鼠标点击操作。若要了解 ChromeDriver 尝试点击的位置,最简单的方法就是打开 Chrome 开发者工具,并在系统调用您的点击操作之前检查要点击的元素。在检查器中选择该元素,并注意代表元素的客户端 rect 的蓝色框,如下图所示。ChromeDriver 将会尝试点击第一个指标的中间位置。

如果 ChromeDriver 抛出“元素不可点击”错误,很可能是因为用户实际上无法点击该位置。如需进行测试,请自行将光标放在第一个客户端矩形的中间,看看该位置是否可点击。

在上述情况中,测试尝试点击锚点元素。在这种情况下,锚点不可点击;只有子图片可供点击。由于图片元素上有 margin-bottom 样式,锚点元素的中间会超出可点击的图片边界,因此 ChromeDriver 会抛出错误。如需详细了解如何确定位置或大小,请参阅 W3 规范。如需修正上述情况,请点击图片,而不是锚点。

当测试尝试执行以下操作时,通常会出现“元素不可点击”错误:

  • 点击某个锚点(其可点击的后代元素不在锚点边界内)(如上)
  • 点击全部或部分位于另一元素下的某个元素
  • 当存在固定叠加层时,点击屏幕外的元素(元素将滚动到视图中,但可能会在固定叠加层下滚动)
  • 点击某个中间不可点击的元素(例如,某些类型的凸起 SVG 元素)

这些问题通常可以通过以下方法解决:点击指定元素的子项、以编程方式移除或隐藏屏蔽元素、使用高级互动 API 在元素左上角的偏移量处点击,或在 JavaScript 中模拟鼠标点击事件。

“元素不可点击”错误

这很可能是因为,在 ChromeDriver 确定元素的位置之后,到 ChromeDriver 实际在该位置发出点击请求之前,元素的位置发生了变化。

如需确定是否这是您的问题,请捕获点击的异常,并立即记录元素的当前位置和大小。将该位置与 ChromeDriver 报告其尝试点击异常的位置进行比较,看看两者是否不同。如果是这样,您需要等待元素停止移动或再次尝试点击。如果不是,请提交一个小测试页并用一个小测试页来重现问题(即使它只是偶尔触发问题)。

ChromeDriver 无法点击正在移动的元素

ChromeDriver 不支持此功能。如果元素最终停止,请等待停止。如果元素永不停止移动,ChromeDriver 无法保证点击会成功。