如何使用Selenium Java单击未在DOM中加载的元素?

问题描述

在div中有很多内部div,如屏幕截图所示

如屏幕截图所示,共有6col和1个复选框col,因此总共可见7列。但是,如果您向右滚动,直到col40还有更多列。但是所有40个列的div不会一次加载,而是在滚动时加载

我想验证col35-col40(或col6之后的任何随机col)是否可见并且是否可编辑和可点击。

我尝试了以下选项,但没有一个起作用。

  1. JavaScript执行器(带有或不带有用于水平滚动的webelement)
  2. 机器人keys.tab/keys.cntrl+keys.end/所有键选项,通过它我们可以手动转到该特定列
  3. 发送键
  4. 动作类
  5. 缩小(这不是可行/正确的方法,但仍在尝试,但这也无法按预期工作)

为此需要一些解决方案。

请注意:滚动条没有任何标识符/属性,但位于主div内,没有任何唯一标识。

解决方法

如果您的元素尚未在DOM中加载,则由于该元素不存在,因此无法对其执行任何操作。 解决该问题的一种方法是设计一种滚动方法,直到元素在DOM中可用,然后执行所需的操作(检查,单击等)。 请注意,您无法滚动到元素(因为不存在),因此可以滚动到另一个引用(定位符)或使用javascript executor对象基于像素。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...