使用java在SeleniumWebDriver(Selenium2)中向上或向下滚动页面

使用java在SeleniumWebDriver(Selenium2)中向上或向下滚动页面,java,selenium,selenium-webdriver,scroll,selenium-rc,Java,Selenium,Selenium Webdriver,Scroll,Selenium Rc,我已经在Selenium 1(又称Selenium RC)中编写了以下代码,用于使用java进行页面滚动: selenium.getEval("scrollBy(0, 250)"); Selenium 2(WebDriver)中的等效代码是什么?场景/测试步骤: 1.打开浏览器并导航到 2.向下滚动一些像素,然后向上滚动 对于向下滚动: WebDriver driver = new FirefoxDriver(); JavascriptExecutor jse = (JavascriptExe

我已经在Selenium 1(又称Selenium RC)中编写了以下代码,用于使用java进行页面滚动:

selenium.getEval("scrollBy(0, 250)");
Selenium 2(WebDriver)中的等效代码是什么?

场景/测试步骤:
1.打开浏览器并导航到
2.向下滚动一些像素,然后向上滚动

对于向下滚动

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)");
jse.executeScript("window.scrollBy(0,-250)");
OR,
jse.executeScript("scroll(0, -250);");
或者,您可以执行以下操作:

jse.executeScript("scroll(0, 250);");
对于向上滚动

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)");
jse.executeScript("window.scrollBy(0,-250)");
OR,
jse.executeScript("scroll(0, -250);");
滚动至页面底部:

JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");
场景/测试步骤:
1.打开浏览器并导航到
2.滚动到页面底部

方式1:使用JavaScriptExecutor

方式2:按ctrl+end

方式3:使用Java机器人类

试试这个:

动作拖动器=新动作(驱动程序);
WebElement draggablePartOfScrollbar=driver.findElement(By.xpath(“/*[@id='jobreslist\u outercontainer']/div/div[2]/div”);
//向下拖动
int numberOfPixelsToDragTheScrollbarDown=50;
对于(int i=10;i<500;i+=numberOfPixelsToDragTheScrollbarDown){
试一试{
//这会导致滚动条逐渐拖动,每次拖动10个单位
dragger.moveToElement(ScrollBar的可拖动部分)。单击并按住().moveByOffset(0,绘制ScrollBarDown的像素数)。释放().perform();
睡眠(1000L);
}捕获(异常e1){}
}
//现在反向拖动(向下)
绘制Crollbardown的像素数=-50;
对于(int i=500;i>10;i+=numberOfPixelsToDragTheScrollbarDown){
//这会导致滚动条逐渐拖动,一次拖动-10个单位
dragger.moveToElement(ScrollBar的可拖动部分)。单击并按住().moveByOffset(0,绘制ScrollBarDown的像素数)。释放().perform();
睡眠(1000L);
}

这可能不是您问题的确切答案(就WebDriver而言),但我发现
java.awt
库比
selenium.Keys
更稳定。 因此,使用前者的向下翻页操作将是:

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_PAGE_DOWN);
robot.keyRelease(KeyEvent.VK_PAGE_DOWN);

在SeleniumWebDriver中有很多上下滚动的方法,我总是使用Java脚本来完成同样的操作

下面是代码,如果我想向上或向下滚动,它总是对我有效

 // This  will scroll page 400 pixel vertical
  ((JavascriptExecutor)driver).executeScript("scroll(0,400)");
你可以从这里得到完整的代码

如果您想滚动查找某个元素,下面的一段代码将适用于您

je.executeScript("arguments[0].scrollIntoView(true);",element);

您将在此处获得完整的文档

滚动到页面底部:

JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");

应在页面上添加一个滚动条,以使用以下选项选择所有元素:

Selenium.executeScript("window.scrollBy(0,450)", "");
如果列表很大,请在执行过程中多次添加滚动条。请注意,滚动仅指向页面中的某一点,例如
(0450)


这个代码对我有用。作为我正在测试的页面,在向下滚动时加载。

Javascript executor始终完美地完成这项工作:

((JavascriptExecutor) driver).executeScript("scroll(0,300)");
其中
(0300)
分别为水平距离和垂直距离。根据您的要求设置距离


如果你是一个完美主义者,并且想在第一次尝试时获得想要向上滚动的确切距离,请使用此工具。这是一个出色的firefox插件。

我不想使用JavaScript或任何外部库,所以这是我的解决方案(C#):

您还可以轻松地将其作为在任何元素上向上或向下滚动的扩展方法

JavascriptExecutor js = ((JavascriptExecutor) driver);
向下滚动:

JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");
向上滚动:

JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");

谢谢Ripon Al Wasim的回答。我做了一些改进。由于网络问题,我重试了三次,直到中断循环

driver.get(url)
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
try_times = 0
while True:
    # Scroll down to bottom
    driver.execute_script("window.scrollBy(0,2000)")

    # Wait to load page
    time.sleep(scroll_delay)
    # Calculate new scroll height and compare with last scroll height
    new_height = driver.execute_script("return document.body.scrollHeight")

    if last_height == new_height:
        try_times += 1

    if try_times > 3:
        try_times = 0
        break
    last_height = new_height
  • 如果要垂直滚动页面以执行某些操作,可以使用以下JavaScript执行。 ((JavascriptExecutor)驱动程序).executeScript(“window.scrollTo(0, 文件.正文.卷轴高度);

        Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
    
  • 导入org.openqa.selenium.JavascriptExecutor

    2.如果要在特定元素上滚动,需要使用以下JavaScript

    WebElement元素= findElement(By.xpath(//input[@id='email']);((JavascriptExecutor) 驱动程序)。executeScript(“参数[0]。scrollIntoView();”,元素)

        Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
    
    其中“element”是要滚动的定位器

    3.如果要在特定坐标处滚动,请使用以下JavaScript。
    ((JavascriptExecutor)driver.executeScript(“window.scrollBy(200300)”); 其中“200300”是坐标。

    4.如果您想垂直向上滚动,可以使用以下JavaScript。 ((JavascriptExecutor) executeScript(“window.scrollTo(document.body.scrollHeight,0)”

        Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
    
  • 如果您想在正确的方向上水平滚动,请使用以下JavaScript。 ((JavascriptExecutor)driver.executeScript(“window.scrollBy(2000,0)”)

  •     Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
    
  • 如果要向左水平滚动,请使用以下JavaScript。 ((JavascriptExecutor)driver.executeScript(“window.scrollBy(-2000,0)”)

  •     Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
    

    1.要将页面滚动到底部,请使用window.scrollTo(0,document.body.scrollHeight)作为参数

    //导航到底部的代码

    WebDriver driver = new ChromeDriver();
    JavascriptExecutor jsExecuter = (JavascriptExecutor)driver;
    jsExecuter.executeScript(window.scrollTo(0,document.body.scrollHeight));
    
    2.要将页面滚动到顶部,请使用window.scrollTo(0,document.body.scrollTop)作为参数

    //导航到顶部的代码

    WebDriver driver = new ChromeDriver();
    JavascriptExecutor jsExecuter = (JavascriptExecutor)driver;
    jsExecuter.executeScript(window.scrollTo(0,document.body.scrollTop));
    
    3.要向左滚动页面,请使用window.scrollTo(0,document.body.scrollLeft)作为参数

    //要导航到左侧的代码

    WebDriver driver = new ChromeDriver();
    JavascriptExecutor jsExecuter = (JavascriptExecutor)driver;
    jsExecuter.executeScript(window.scrollTo(0,document.body.scrollLeft));
    
    4.滚动到某一点 window.scrollTo(0500)作为参数

    //导航到某一点的代码,例如500在此处作为值传递

    WebDriver driver = new ChromeDriver();
    JavascriptExecutor jsExecuter = (JavascriptExecutor)driver;
    jsExecuter.executeScript(window.scrollTo(0,500));
    
    要直接在浏览器中检查导航,请在浏览器中打开“开发人员”工具并导航到控制台。 在控制台窗口上执行命令。滚动到(0400)
    JavascriptExecutor最好向下滚动网页 JavascriptExecutor中的scrollTo函数可以实现这一点

    JavascriptExecutor js = ((JavascriptExecutor) driver);
    js.executeScript("window.scrollTo(0,100"); 
    
    上述代码将向下滚动100个y坐标

    上述代码用于s
    JavascriptExecutor jse = (JavascriptExecutor)driver;
    jse.executeScript("window.scrollBy(0,250)");