2

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

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

帮助将不胜感激。

4

4 回答 4

3

这是 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

于 2017-11-24T10:21:48.447 回答
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\" })");
于 2013-09-05T12:55:56.810 回答
0

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

document.getElementById("ctl00_Menu1_scrollDiv").scrollTop(250);
于 2013-09-05T12:32:31.917 回答
0

基于这篇文章的非 JQuery 解决方案。

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

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

于 2017-11-10T17:08:37.057 回答