5

我需要 Selenium 中的 scrool 页面几乎到页面末尾(直到底部 150 像素)。但是我的代码不起作用。它滚动到底部。怎么修的?

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

3 回答 3

17

尝试这个:

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

几点注意事项:

  • 您正在执行一个滚动命令,该命令不返回IWebElement,因此不需要该IWebElement element =部分。
  • 你也不需要javascript:零件
  • 由于您想滚动到绝对位置,因此scrollTo更合适
于 2013-09-16T17:15:21.967 回答
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()) + ");");
}
于 2013-09-16T17:27:36.567 回答
0

这对我有用:)

  public IWebElement ScrollTo(IWebElement element)
            {
                ((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView(true);", element);
                return element;
            }
于 2020-07-24T06:05:20.640 回答