RobotFramework-无法使用selenium库单击元素,但执行Javascript可以单击



我正在使用RobotFramework来自动化一个应用程序。我正在使用硒库。对于整个应用程序,selenium关键字";点击按钮";以及";单击"元素";抛出一个错误,声明";ElementClickInterceptedException:消息:元素点击被拦截:元素***在点上不可点击(376289(。其他元素将收到点击:">

我可以使用ID来识别元素,并且它不在任何iframe或shadow根元素下。但是我仍然无法点击该元素。我还尝试添加等待命令,看看是否是同步问题,但不是。我尝试使用Action类、鼠标移动和单击等进行单击,但没有成功。

我试着用";捕获元素屏幕截图";它捕捉到了一个空地方的屏幕截图,然而,当我试图在浏览器开发工具中定位元素时,它准确地定位了

我找到的唯一可行的解决方案是运行";执行Javascript";关键字单击元素,如

Execute Javascript    $('#id').click();

问题:虽然我能够让它发挥作用,但我很想知道应用程序中可能存在什么问题。由于限制,我无法共享应用程序dom代码。抱歉

这意味着您尝试单击的元素是

  1. 离开可见屏幕(查看端口(,因此您需要滚动页面以使该元素可访问
  2. 它被其他元素覆盖-例如,您应该打开一个下拉菜单等
  3. 您试图在元素仍未完全渲染时单击它——在这种情况下,您需要添加一些延迟以使元素完全渲染并准备好接受单击

Selenium通常模仿人类GUI操作。所以,作为一个人类用户,你不能在不打开下拉列表的情况下点击里面的元素,也不能在可见屏幕之外点击元素。这就是Selenium.click()方法不能点击这些元素的原因
JavaScript点击是一个更强大的工具,它可以点击不可见、覆盖等元素。它不模仿人类的GUI操作。

最新更新