如何使用java在selenium WebDriver中多次按下PagePdown?

时间:2017-07-31 14:28:03

标签: java selenium

我想使用Java在Selenium WebDriver中使用Robot类向下滚动。我已经发现,为了访问网页中所需的元素,我必须按PgDn按钮28次。因此,我想使用Robot类按PgDn按钮28次。我写的代码如下:

try {
    Robot robot = new Robot();

    for(int i=0; i<29; i++) {
        robot.keyPress(KeyEvent.VK_PAGE_DOWN);
    }

} catch (AWTException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
}

我使用for循环来执行此操作,但它无法正常工作。 PgDn KeyEvent只执行一次。

4 个答案:

答案 0 :(得分:0)

如果我们还需要添加密钥发布。下面的代码可能会给你一些想法。

try
{
    Robot robot=new Robot();

    robot.keyPress(KeyEvent.VK_A);
    robot.keyRelease(KeyEvent.VK_A);

    robot.mousePress(KeyEvent.BUTTON1_MASK);
    robot.mouseRelease(KeyEvent.BUTTON1_MASK);
}
catch(Exception e)
{}

希望这会有所帮助。感谢。

答案 1 :(得分:0)

尝试在keyPress之后添加keyRelease

robot.keyRelease(KeyEvent.VK_PAGE_DOWN);

答案 2 :(得分:0)

我的代码工作正常,只需在keyPress之后添加keyRelease即可。我非常感谢你的所有评论,以帮助我解决这个问题。

答案 3 :(得分:0)

这种方法的主要问题是,如果页面内容或布局或屏幕分辨率或浏览器/设备发生变化,那么它很脆弱,这可能会破坏此脚本。

我会这样做:

  1. 加载页面
  2. 搜索元素
  3. 向下滚动并转到2
  4. 基本上,您反复向下滚动并搜索元素,直到找到它或者到达页面底部。

    脚本

    int currentHeight = 1;
    int lastHeight = 0;
    boolean endOfPage = false;
    while (!isElementPresent(locator) && !endOfPage)
    {
        currentHeight = scrollDown();
        endOfPage = currentHeight == lastHeight;
    }
    if (!endOfPage)
    {
        // do something with the desired element
    }
    else
    {
        // log error that the element was not found before reaching end of page
    }
    

    支持功能

    public static int scrollDown()
    {
        JavascriptExecutor js = ((JavascriptExecutor) driver);
        js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
    
        return (int) (long) js.executeScript("return document.body.scrollHeight;");
    }
    
    public static boolean isElementPresent(By locator)
    {
        return !driver.findElements(locator).isEmpty();
    }