繁体   English   中英

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

[英]How to scroll to bottom of div element Selenium Webdriver

我有一个用例,其中网页上有一个 div 元素,只要您单击链接,它就会显示为一个弹出对话框(它不是实际的弹出窗口,它类似于在单击链接时在 Facebook 中打开的对话框进行检查)对您的帖子等的反应)

我正在使用带有 Java 的 Selenium WebDriver 来自动化此应用程序的测试,我的用例涉及我滚动到对话框底部,那里有一个显示更多项目的链接,当用户点击显示更多时,它会填充另外 10 个项目以此类推,直到没有其他项目可供用户访问。

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

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

如果有人对如何实现这一目标有任何想法,请告诉我。

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

另一种滚动到任何可滚动元素内部(的)底部的方法:

public void scrollToBottomInsideDiv(WebElement scrollArea) {
    JavascriptExecutor js = ((JavascriptExecutor) webdriver);
    js.executeScript("arguments[0].scrollTo(0, arguments[0].scrollHeight)", scrollArea);
}
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();

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

请参阅 Sagar007 的最后一个答案,它使用单独的函数scroll_Page()来实现这一点。

代码直接取自他的回答

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

解决方案:

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

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

创建方法 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;
}

使用scrollIntoView

scrollIntoView vs moveToElement scrollIntoView vs moveToElement

more items链接元素作为参数传递。

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

您还可以使用moveToElement

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

我在需要滚动的页面上有一个 div。 此外,数据是动态加载的。 该函数应该从while(someCondition())循环中调用。 使用过Java

    private int scroll; 
    private void scrollDownPopup() {
        scroll += 1000;
        JavascriptExecutor jse = (JavascriptExecutor) browser;
        // you can get query selector from inspector
        jse.executeScript("document.querySelector('body > div.Blah.Blah1 > div > div.ClassOfYourDiv').scrollTo(0, "
                + scroll + ");");
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM