![](/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.