在Selenium中将页面几乎滚动到最后

时间:2013-09-16 16:36:12

标签: c# selenium

我需要在Selenium中滚动页面几乎到页面末尾(150px直到底部)。但我的代码不起作用。它滚动到底部。它是如何解决的?

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

3 个答案:

答案 0 :(得分:15)

试试这个:

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

一些注意事项:

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

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

答案 2 :(得分:0)

这对我有用:)

  public IWebElement ScrollTo(IWebElement element)
            {
                ((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView(true);", element);
                return element;
            }