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

时间:2013-09-05 12:02:18

标签: java javascript webdriver selenium-webdriver

我搜索了所有论坛,但我没有得到正确答案。我要测试的网页下面隐藏了一个链接,我试图通过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 个答案:

答案 0 :(得分: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\" })");

答案 1 :(得分: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. 

不要担心我们可以使用javascriptExecutor

在java中使用它

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

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