【问题标题】:How do I scroll down vertically in a specific div in a web page如何在网页的特定 div 中垂直向下滚动
【发布时间】:2013-09-09 06:09:38
【问题描述】:

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

我从论坛中找到以下代码,该代码正在滚动整个页面。我不想要这个,我想像屏幕截图一样在特定的 div 区域中垂直向下滚动。

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

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

请帮助我解决这个问题。提前致谢。

我们将不胜感激。

【问题讨论】:

  • 在 div 中保留一个框架是一个选项??
  • 感谢您的回复。在 div 内部,他们使用了一张桌子。请找到随附的新屏幕截图 Code.jpg
  • 表格是如何产生概率的??将 iframe 保留在 div 中,将 table 保留在 iframe 中
  • 到底为什么要使用 iframe?那里有不好的建议。

标签: java javascript webdriver selenium-webdriver


【解决方案1】:

这是 umendra tomar ,我找到了非常简单的解决方案,请使用下面的代码在 html 中使用 selenium 滚动特定的 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

【讨论】:

    【解决方案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\" })");
    

    【讨论】:

    • 您是否要求本机 webdriver 代码(在 java 中)来执行滚动?我担心这是不可能的。您将不得不使用 JavascriptExecutor。
    • @UmamaheshwarThota 如果有任何帮助,请考虑接受答案。
    • 当然 Abhijeet Vaikar。
    • 感谢 Abhijeet Vaikar 的回答。我在问你第二次在 Java 中给出的相同代码。它对我有用。再次感谢。 Javascript执行器js; js = (JavascriptExecutor) 驱动程序; js.executeScript("$(\"#ctl00_Menu1_scrollDiv\").animate({ scrollTop: \"100px\" })");
    【解决方案3】:

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

    document.getElementById("ctl00_Menu1_scrollDiv").scrollTop(250);
    

    【讨论】:

    • 感谢您的回复,但是请您给出java中的代码,如何使用上面的语句。
    【解决方案4】:

    基于this post的非JQuery解决方案。

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

    其中divWithScrollbarElement 是您要滚动的 div 元素,elementToScrollTo 是您想要使其可见的子元素(在我的情况下,它实际上是我最初尝试的元素的父元素看法)。如果 elementToScrollTo 实际上还没有在 DOM 中,您可能需要使用脚本一次尽可能向下滚动,然后再次加载更多元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 2016-09-03
      • 2014-10-26
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多