c#Selenium IJavaScriptExecutor向下滚动不起作用

时间:2018-10-22 11:31:55

标签: c# selenium selenium-webdriver webdriver

我遇到了问题,因为我需要向下滚动页面, 所以我决定使用IJavaScriptExecutor

IJavaScriptExecutor js =  (IJavaScriptExecutor) driver;
js.executeScript("window.scrollBy(0,1000)"); 

我也尝试过

js.ExecuteScript("arguments[0].scrollIntoView();", invite); 

js.ExecuteScript("window.scrollTo(0, document.body.scrollHeight)");

但这不起作用。

2 个答案:

答案 0 :(得分:0)

在尝试向下滚动页面之前,请确保DOM Tree已完全呈现。 在这里您可以找到详细的讨论How can I make sure if some HTML elements are loaded for Selenium + Python?

完成页面加载后,您可以按以下方式调用scroll()方法:

  • 向下滚动250个像素:

    IJavaScriptExecutor js = (IJavaScriptExecutor) driver;
    js.ExecuteScript("window.scrollBy(0,250)", "");
    
  • 要向下滚动整个页面:

    IJavaScriptExecutor js = (IJavaScriptExecutor) driver;
    js.ExecuteScript("window.scrollTo(0, document.body.scrollHeight)");
    
  • 要将元素滚动到视图中:

    IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("css_element")));
    IJavaScriptExecutor js = (IJavaScriptExecutor) driver;
    js.ExecuteScript("arguments[0].scrollIntoView(true);",element);
    

答案 1 :(得分:0)

我在另一个线程中发布了一个解决方案。

问题How to scroll smoothly with Selenium WebDriver and/or Sikuli in Java

答案https://stackoverflow.com/a/51870388/6220192