页或硒的webdriver(硒2)用java向下滚动(Page scroll up or down

2019-06-18 01:10发布

我已经写在硒1(又名硒RC)的页面滚动使用Java以下代码:

selenium.getEval("scrollBy(0, 250)");

什么是硒2(webdriver的)的等效代码?

Answer 1:

对于向下滚动

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)", "");

或者,你可以做如下:

jse.executeScript("scroll(0, 250);");

对于向上滚动

jse.executeScript("window.scrollBy(0,-250)", "");
OR,
jse.executeScript("scroll(0, -250);");


Answer 2:

滚动到页面底部:

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


Answer 3:

有很多方法可以上下滚动中硒的webdriver我总是使用Java脚本做同样的。

下面是如果我要向上或向下滚动,它总是对我的作品的代码

 // This  will scroll page 400 pixel vertical
  ((JavascriptExecutor)driver).executeScript("scroll(0,400)");

你可以从这里得到完整的代码滚动页面中硒

如果你要滚动的元素,然后在下面的代码会为你工作。

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

您将获得完整的文档在这里滚动特定元素



Answer 4:

这可能不是一个确切的回答你的问题(在webdriver的方面),但我发现java.awt库比更稳定selenium.Keys 。 所以,使用前一个页面向下的动作将是:

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


Answer 5:

JavascriptExecutor js = ((JavascriptExecutor) driver);

向下滚动:

js.executeScript("window.scrollTo(0, document.body.scrollHeight);");

向上滑动:

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


Answer 6:

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

IWebElement body = Driver.FindElement(By.TagName("body"));

IAction scrollDown = new Actions(Driver)
    .MoveToElement(body, body.Size.Width - 10, 15) // position mouse over scrollbar
    .ClickAndHold()
    .MoveByOffset(0, 50) // scroll down
    .Release()
    .Build();

scrollDown.Perform();

你也可以很容易地使这是一个扩展方法或任何元素上上下滚动。



Answer 7:

试试这个

        Actions dragger = new Actions(driver);
        WebElement draggablePartOfScrollbar = driver.findElement(By.xpath("//*[@id='jobreslist_outercontainer']/div/div[2]/div"));

        // drag downwards
        int numberOfPixelsToDragTheScrollbarDown = 50;
        for (int i=10;i<500;i=i+numberOfPixelsToDragTheScrollbarDown){
            try{
        // this causes a gradual drag of the scroll bar, 10 units at a time
        dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform();
        Thread.sleep(1000L);
            }catch(Exception e1){}
        } 

        // now drag opposite way (downwards)
        numberOfPixelsToDragTheScrollbarDown = -50;
        for (int i=500;i>10;i=i+numberOfPixelsToDragTheScrollbarDown){
        // this causes a gradual drag of the scroll bar, -10 units at a time
        dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform();
        Thread.sleep(1000L);
        }


Answer 8:

你应该滚动添加到页面中选择使用所有元素Selenium.executeScript("window.scrollBy(0,450)", "")

如果你有一个大名单,通过执行多次添加滚动。 注意滚动只能去到某一点的页面,例如(0450)。



Answer 9:

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

此代码对我的作品。 作为我测试的页面,加载因为我们向下滚动。



Answer 10:

JavaScript的执行一直做这项工作完美:

((JavascriptExecutor) driver).executeScript("scroll(0,300)");

其中(0,300)分别是水平和垂直距离。 把你的距离,按您的要求。

如果你一个完美主义者,希望得到你喜欢了滚动到在第一次尝试,使用这个工具,精确的距离MeasureIt的 。 这是一个辉煌的Firefox插件。



Answer 11:

感谢里彭铝瓦西姆的答案。 我做了一些改进。 由于网络问题,我重试三次,直到破环。

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


Answer 12:

  1. 如果要垂直滚动页面才能执行某些操作,您可以使用下面的JavaScript做到这一点。 ((JavascriptExecutor)驱动程序).executeScript(“window.scrollTo(0,document.body.scrollHeight)”);

      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元素= driver.findElement(By.xpath(“//输入[@ ID = '电子邮件']”));((JavascriptExecutor)驱动程序).executeScript(“参数[0] .scrollIntoView();”,元素) ;

当“元素”是你要滚动的定位。

3,如果你想在一个特定的滚动协调,请使用以下的JavaScript。
((JavascriptExecutor)驱动程序).executeScript(“window.scrollBy(200,300)”); 其中,“200,300”是坐标。

4.如果你想在垂直方向向上滚动,你可以使用下面的JavaScript。 ((JavascriptExecutor)驱动程序).executeScript(“window.scrollTo(document.body.scrollHeight,0)”);

  1. 如果你想在正确的方向横向滚动,使用下面的JavaScript。 ((JavascriptExecutor)驱动程序).executeScript(“window.scrollBy(2000,0)”);

  2. 如果你想在左边方向水平滚动,请使用以下的JavaScript。 ((JavascriptExecutor)驱动程序).executeScript(“window.scrollBy(-2000,0)”);



文章来源: Page scroll up or down in Selenium WebDriver (Selenium 2) using java