![](/img/trans.png)
[英]How to click on a same button multiple times using Selenium WebDriver with Java
[英]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,我的代碼就可以正常工作。 感謝您提出的所有意見,以幫助我解決此問題。
我使用這種方法的主要問題是它很脆弱,如果頁面內容或布局或屏幕分辨率或瀏覽器/設備發生更改,則可能會破壞此腳本。
我會這樣處理:
基本上,您會反復向下滾動並搜索該元素,直到找到該元素或到達頁面底部為止。
劇本
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.