首页 文章

如何滚动到div元素Selenium Webdriver的底部

提问于
浏览
1

我有一个用例,其中网页上有一个div元素,一旦你点击一个链接就会出现一个弹出对话框(它不是一个真正的弹出窗口,就像你点击链接检查时在Facebook上打开的对话框一样对你的帖子的反应等)

我正在使用Selenium WebDriver和Java来自动化这个应用程序的测试,我的用例让我滚动到对话框的底部,其中有一个链接显示更多项目,当用户点击显示更多项目时,它会填充另外10个项目在列表中等等,直到没有其他项目留给用户访问 .

所以基本上我必须向下滚动该特定的div元素,直到我一直看到 Show More 链接,当驱动程序无法找到显示更多链接时,它应该停止 .

注意 - 我不能只使用javascript window.scrollTo() 滚动到页面底部,因为它将向下滚动整个网页,但我只想滚动到该分割元素的底部 .

如果有人知道如何实现这一点,请告诉我 .

我在这里先向您的帮助表示感谢 !

4 回答

  • 0

    我遇到过这种问题,我使用SQA SO上提出的类似问题解决了这个问题 . 这是post .

    请参阅Sagar007的last answer,它使用单独的函数 scroll_Page() 来实现此目的 .

    代码直接来自他的回答

    某些HTML页面具有内部(自定义)滚动条 . 我们必须以一点点不同的方式处理 . Javascript在这里不起作用 . 方案:

    WebElement scrollArea = 
    driver.findElement(By.cssSelector("div.slimScrollBar"));
    

    我添加了一个新步骤,在其中使用 click() 方法单击div元素,然后继续下一步 .

    创建方法scroll_Page,如下所示 . 将此方法称为

    scroll_Page(scrollArea ,100);
    

    其中scrollArea是拖动(滚动)元素,100是滚动点 .

    public static boolean scroll_Page(WebElement webelement, int scrollPoints)
    {
    try
    {               
        Actions dragger = new Actions(driver);
        // drag downwards
        int numberOfPixelsToDragTheScrollbarDown = 10;
        for (int i = 10; i < scrollPoints; i = i + numberOfPixelsToDragTheScrollbarDown)
        {
            dragger.moveToElement(webelement).clickAndHold().moveByOffset(0, numberOfPixelsToDragTheScrollbarDown).release(webelement).build().perform();
        }
        Thread.sleep(500);
        return true;
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return false;
    }
    
  • 0

    使用 scrollIntoView

    scrollIntoView vs moveToElement scrollIntoView vs moveToElement

    传递 more items link元素作为参数 .

    ((JavascriptExecutor)驱动程序).executeScript(“arguments [0] .scrollIntoView(true);”,element);

    你也可以用 moveToElement

    Actions actions = new Actions(driver); actions.moveToElement(element); actions.perform();

  • 0
    WebElement ele= driver.findElement(By.id("id_of_element"));
    ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", ele);
    

    要么

    WebElement ele= driver.findElement(By.id("id_of_element"));
    Actions builder = new Actions(driver);
    builder.moveToElement(ele).click();
    Action build=builder.build();
    build.perform();
    
  • 0

    滚动到任何可滚动元素内部的另一种方式:

    public void scrollToBottomInsideDiv(WebElement scrollArea) {
        JavascriptExecutor js = ((JavascriptExecutor) webdriver);
        js.executeScript("arguments[0].scrollTo(0, arguments[0].scrollHeight)", scrollArea);
    }
    

相关问题