0

查看屏幕截图以了解上下文。

亲爱的聪明人,

我试图让 Selenium 选择一系列 15 个复选框,但是,在需要滚动之前,只有前八个是可见的。

我试图让 Selenium 在嵌入网页的动态生成的 JavaScript 窗口中滚动,但没有运气。问题是内部窗口的滚动条没有任何 html 表示,因为它是嵌入式小程序中的一个对象。

没有scrollIntoView()类型解决方案有效,因为复选框在滚动发生后动态加载之前不存在。

人类用户滚动内部窗口的方式可以是:

  • 将光标聚焦在内部窗口中并向下滚动鼠标滚轮
  • 单击并按住嵌入式滚动条中的向下箭头(没有 html 表示)
  • 向下拖动嵌入的滚动条(没有 html 表示)

我曾尝试使用JavascriptExecutor诸如scrollTo,scrollBy之类的解决方案scrollTop,但没有运气。

我尝试过解决方法,例如:

  • 一种调用按键的方法,例如ARROW_DOWN,PAGE_DOWNENTER各种组合。在各种机器上取得了部分成功,但没有什么可靠的:
public static void simulateScrolling(Actions action) {

    //example code, there were a few variations
    action.sendKeys(Keys.ENTER).build().perform();
    action.sendKeys(Keys.ENTER).build().perform();
    action.sendKeys(Keys.ENTER).build().perform();

    //wait for the next button to buffer
    try {
        Thread.sleep(300);
    } catch (InterruptedException e) {
           e.printStackTrace();
    }   
}
  • 在将光标移动到内部窗口上后,使用Java的Robot方法让鼠标滚动,但没有成功:mouseWheel()
Robot rob = new Robot();
rob.mouseMove(driver.findElement(By.id(checkboxId)).getLocation().getX(),driver.findElement(By.id(checkboxId)).getLocation().getY());
rob.delay(750);
rob.mouseWheel(200);

任何帮助将不胜感激。

谢谢!

4

0 回答 0