我搜索了所有论坛,但我没有得到正确答案。我要测试的网页下面隐藏了一个链接,我试图通过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
请帮我解决这个问题。提前谢谢。
帮助将不胜感激。
答案 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
答案 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中,您可能需要使用脚本一次尽可能向下滚动,然后再次加载元素。