有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在网页中的特定div中垂直向下滚动

我已经搜索了所有的论坛,但我没有得到我的问题的正确答案。我要测试的web页面下面隐藏了一个链接,我试图通过使用xpath或元素的ID属性来手动查找它,但在运行web驱动程序脚本时无法找到它。即使它在该元素上没有给出任何错误,我在下一个命令行上也会得到一个错误

我在论坛上找到了下面的代码,它可以滚动整个页面。我不想这样,我想在一个特定的div区域垂直向下滚动,如屏幕截图中所示

JavascriptExecutor jsx = (JavascriptExecutor)driver;
jsx.executeScript("ctl00_Menu1_scrollDiv.scrollBy(0,250)", "");

enter image description here

enter image description here

enter image description here

div id for this is "ctl00_Menu1_scrollDiv"
Element id: ctl00_Menu1_DlMenu_ctl09_LnkMenuname

请在这个问题上帮助我。提前谢谢

我们将不胜感激


共 (4) 个答案

  1. # 1 楼答案

    首先,您不应该仅通过id引用元素。您应该设置scrollTop以将其滚动到某个位置

    document.getElementById("ctl00_Menu1_scrollDiv").scrollTop(250);
    
  2. # 2 楼答案

    检查这是否适合你

    var s = $('#ctl00_Menu1_scrollDiv').scrollTop(); 
    

    这将给出div中滚动的当前值。仅当您希望在div中动态滚动到某个点时才使用此选项。否则,可以在animate()中硬编码scrollTop值

    使用滚动的当前值,可以参数化下面给定的scrollTop参数

    $("#ctl00_Menu1_scrollDiv").animate({ scrollTop: "100px" }); // Here 100 px is just an example
    

    我用它在webdriver框架中以编程方式滚动一个大div。此外,如果AUT在浏览器中加载了jQuery,这也会起作用

    在Java中:

    JavascriptExecutor js;
    js = (JavascriptExecutor) driver;
    js.executeScript("$(\"#ctl00_Menu1_scrollDiv\").animate({ scrollTop: \"100px\" })");
    
  3. # 3 楼答案

    这是umendra tomar,我已经找到了非常简单的解决方案,请使用下面的代码使用selenium在html中滚动特定的div

    JavascriptExecutor js = (JavascriptExecutor)driver;
    js.executeScript("document.getElementById('scrollCustom').scrollTop= 450");
    
    scrollCustom =  this is the ID of your div which you want to scroll.
    document.getElementById =  this is use in javascript to locate a webelement. 
    

    不用担心,我们可以在java中使用javascriptExecutor

  4. # 4 楼答案

    基于this post的非JQuery解决方案

    ((JavascriptExecutor) driver).executeScript(
        "arguments[0].scrollTop=arguments[1].offsetTop",
        divWithScrollbarElement,
        elementToScrollTo);
    

    其中divWithScrollbarElement是要滚动的div元素,elementToScrollTo是要使其可见的子元素(在我的例子中,它实际上是我最初试图查看的元素的父元素)。如果elementToScrollTo实际上还不在DOM中,则可能需要使用脚本一次以尽可能向下滚动,然后再次加载更多元素