[英]How to scroll to bottom of div element Selenium Webdriver
我有一个用例,其中网页上有一个 div 元素,只要您单击链接,它就会显示为一个弹出对话框(它不是实际的弹出窗口,它类似于在单击链接时在 Facebook 中打开的对话框进行检查)对您的帖子等的反应)
我正在使用带有 Java 的 Selenium WebDriver 来自动化此应用程序的测试,我的用例涉及我滚动到对话框底部,那里有一个显示更多项目的链接,当用户点击显示更多时,它会填充另外 10 个项目以此类推,直到没有其他项目可供用户访问。
所以基本上我必须向下滚动那个特定的 div 元素,直到我一直看到Show More
链接,当驱动程序无法找到 show more 链接时,它应该停止。
注意 - 我不能使用 javascript window.scrollTo()
滚动到页面底部,因为它会向下滚动整个网页,但是我只想滚动到该除法元素的底部。
如果有人对如何实现这一目标有任何想法,请告诉我。
我在这里先向您的帮助表示感谢 !
另一种滚动到任何可滚动元素内部(的)底部的方法:
public void scrollToBottomInsideDiv(WebElement scrollArea) {
JavascriptExecutor js = ((JavascriptExecutor) webdriver);
js.executeScript("arguments[0].scrollTo(0, arguments[0].scrollHeight)", scrollArea);
}
WebElement ele= driver.findElement(By.id("id_of_element"));
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", ele);
或
WebElement ele= driver.findElement(By.id("id_of_element"));
Actions builder = new Actions(driver);
builder.moveToElement(ele).click();
Action build=builder.build();
build.perform();
我遇到过这种问题,我使用在 SQA SO 上提出的类似问题解决了这个问题。 这是帖子。
请参阅 Sagar007 的最后一个答案,它使用单独的函数scroll_Page()
来实现这一点。
代码直接取自他的回答
某些 HTML 页面具有内部(自定义)滚动条。 我们必须以稍微不同的方式处理。 Javascript 在这里不起作用。
解决方案:
WebElement scrollArea =
driver.findElement(By.cssSelector("div.slimScrollBar"));
我添加了一个新步骤,在其中单击 div 元素,使用click()
方法,然后继续下一步。
创建方法 scroll_Page 如下所示。 将此方法称为
scroll_Page(scrollArea ,100);
其中 scrollArea 是您拖动的(滚动)元素,而 100 是滚动点。
public static boolean scroll_Page(WebElement webelement, int scrollPoints)
{
try
{
Actions dragger = new Actions(driver);
// drag downwards
int numberOfPixelsToDragTheScrollbarDown = 10;
for (int i = 10; i < scrollPoints; i = i + numberOfPixelsToDragTheScrollbarDown)
{
dragger.moveToElement(webelement).clickAndHold().moveByOffset(0, numberOfPixelsToDragTheScrollbarDown).release(webelement).build().perform();
}
Thread.sleep(500);
return true;
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
使用scrollIntoView
scrollIntoView vs moveToElement scrollIntoView vs moveToElement
将more items
链接元素作为参数传递。
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
您还可以使用moveToElement
Actions actions = new Actions(driver); actions.moveToElement(element); actions.perform();
我在需要滚动的页面上有一个 div。 此外,数据是动态加载的。 该函数应该从while(someCondition())
循环中调用。 使用过Java
private int scroll;
private void scrollDownPopup() {
scroll += 1000;
JavascriptExecutor jse = (JavascriptExecutor) browser;
// you can get query selector from inspector
jse.executeScript("document.querySelector('body > div.Blah.Blah1 > div > div.ClassOfYourDiv').scrollTo(0, "
+ scroll + ");");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.