簡體   English   中英

如何使用Java在Selenium WebDriver中多次按下Page Down鍵?

[英]How to keyPress Page Down multiple times in selenium WebDriver using java?

我想使用Java在Selenium WebDriver中使用Robot類向下滾動。 我發現要訪問網頁中的必需元素,我必須按PgDn按鈕28次。 因此,我想使用Robot類按下28次PgDn按鈕。 我為執行此操作而編寫的代碼如下:

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僅執行一次。

如果我們還需要添加密鑰發布。 下面的代碼可能會給您一些想法。

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)
{}

希望這可以幫助。 謝謝。

嘗試在keyPress之后添加一個keyRelease

robot.keyRelease(KeyEvent.VK_PAGE_DOWN);

只需在keyPress之后添加keyRelease,我的代碼就可以正常工作。 感謝您提出的所有意見,以幫助我解決此問題。

我使用這種方法的主要問題是它很脆弱,如果頁面內容或布局或屏幕分辨率或瀏覽器/設備發生更改,則可能會破壞此腳本。

我會這樣處理:

  1. 載入頁面
  2. 搜索元素
  3. 向下滾動並轉到2

基本上,您會反復向下滾動並搜索該元素,直到找到該元素或到達頁面底部為止。

劇本

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM