如何使用java使用moveTo()覆盖selenium中的findElements()实现?

如何使用java使用moveTo()覆盖selenium中的findElements()实现?,selenium,selenium-webdriver,webdriver,selenium-chromedriver,selenium-ide,Selenium,Selenium Webdriver,Webdriver,Selenium Chromedriver,Selenium Ide,我正在将selenium webDriver与Java结合使用,并在selenium查找元素时移动到列表中的每个元素,以寻找查找元素的解决方案。我正在寻找一个特定于“ChromeDriver”的解决方案,因为chrome驱动程序使用点/坐标,每次我的脚本无法执行从一个位置到另一个位置的元素拖放列表时 场景描述:我的应用程序有两个表(T1和T2),每个表行下都有“li和ui”列表作为子项。我需要将“T2”行/行“web元素”拖放到“T1”行下的匹配web元素(拖放过程中,这些元素在视口中可能可见或

我正在将selenium webDriver与Java结合使用,并在selenium查找元素时移动到列表中的每个元素,以寻找查找元素的解决方案。我正在寻找一个特定于“ChromeDriver”的解决方案,因为chrome驱动程序使用点/坐标,每次我的脚本无法执行从一个位置到另一个位置的元素拖放列表时

场景描述:我的应用程序有两个表(T1和T2),每个表行下都有“li和ui”列表作为子项。我需要将“T2”行/行“web元素”拖放到“T1”行下的匹配web元素(拖放过程中,这些元素在视口中可能可见或不可见,但我使用了moveTo()方法)

问题:当我在Chrome中执行脚本时,当前“T2”视口中不存在的web元素被单击并拖动到“T1”中匹配的“父web元素”。但在第一次运行之后,由于“以前”标识的元素位置发生了更改,网页对齐中断和后续拖放操作失败

我尝试过多种方法,比如,单击“T2元素1”并移动并执行拖放,使用javascript executor在视口中显示元素等等。。但每次UI对齐中断时

我想知道,是否有人使用MoveTo()函数定制了“Selenium FindElements()方法”的实现

比如:

@覆盖
公共列表findElements(按arg0){
List moveAndFind=null;
试一试{
WebElement firstIndex=Driver.findElement();//移动到By参数的第一个匹配元素。
moveAndFind.add(firstIndex);//通过捕获特定于Chrome驱动程序的更新位置来收集网页中所有匹配的元素
}捕获(WebDriverException ex){
例如printStackTrace();
}
返回moveAndFind;
}

为了明确回答您的问题,您不能
覆盖
FindElement
的实现(或者,由于我对Java实现不太熟悉,我不知道什么)

现在,为了克服您的问题,您有几种选择:

  • 因为已经创建了列表,所以始终可以从列表的末尾移动。这样,元素的顺序始终与初始索引相同
  • 使用lambda表达式通过索引以外的任何其他方式标识列表中的元素
  • 在元素每次移动后刷新和重建列表。根据需要移动的元素数量,这可能是性能方面更差的选项

  • 热烈欢迎您提出要点!但我在每个列表中都有大量的列表项。因此,重建列表将不是一个可行的解决方案,因为这将是自动化中的性能消耗。我也这么认为。然后,我看到的最简单的选项是使用列表底部的拖放。有人能建议在执行拖放操作时如何处理Chrome UI对齐中断吗。
    @Override
            public List<WebElement> findElements(By arg0) {
                List<WebElement> moveAndFind = null;
                try{
                    WebElement firstIndex = Driver.findElement();//Move to first matching element of By argument.
                    moveAndFind.add(firstIndex); // Collect all the matching elements in the web page by capturing the updated location - specific to Chrome driver
                }catch(WebDriverException ex){
                    ex.printStackTrace();
                }
                return moveAndFind;
            }