在Selenium中将页面滚动到接近底部

6

我需要在Selenium中将页面滚动到接近底部(距离底部150像素)。但是我的代码不起作用,它会滚动到底部。该怎么解决?

IWebElement element = (IWebElement)((IJavaScriptExecutor)driver).ExecuteScript("javascript:window.scrollBy(0,document.body.scrollHeight-150)");
3个回答

19

试一试:

((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(0, document.body.scrollHeight - 150)");

几点注意事项:

  • 您正在执行滚动命令,该命令不返回 IWebElement,因此不需要 IWebElement element = 部分。
  • 您也不需要 javascript: 部分
  • 由于您想要滚动到绝对位置,scrollTo 更为合适

1
你可以使用JavaScript的scrollTo方法滚动到所需位置。
public void scrollToElement(By by) {
  Locatable element = (Locatable) selenium.findElement(by);
  Point p= element.getCoordinates().getLocationOnScreen();
  JavascriptExecutor js = (JavascriptExecutor) selenium;  
  js.executeScript("window.scrollTo(" + p.getX() + "," + (p.getY()) + ");");
}

很好的答案,因为我发现它对我的情况非常有用。谢谢! - Mohammed Sufian

1
这是适合我的方法 :)
  public IWebElement ScrollTo(IWebElement element)
            {
                ((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView(true);", element);
                return element;
            }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接