Selenium – 向下滚动一个不断增长的页面

我正在使用Selenium和c#。

Selenium通常可以自动向下滚动到网页的底部以查找元素,但我遇到了某个页面可能会增加大小的问题。

任何人都可以建议一旦它的大小增加就会向下滚动到页面底部的代码吗?

尝试使用此问题中描述的javascript

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

我知道这是一个旧的,但它可能是某人的帮助。 我推出了以下C#代码:

  private void ScrollToBottom(IWebDriver driver) { long scrollHeight = 0; do { IJavaScriptExecutor js = (IJavaScriptExecutor) driver; var newScrollHeight = (long) js.ExecuteScript("window.scrollTo(0, document.body.scrollHeight); return document.body.scrollHeight;"); if(newScrollHeight == scrollHeight) { break; } else { scrollHeight = newScrollHeight; Thread.Sleep(400); } } while (true); } 

很遗憾我不使用c#但是猜测任何语言的逻辑都是一样的。 如果它是页面的延迟加载,那么您可以使用Actions类来执行发送向下翻页键选项。 如果您收到更多要加载的项目或没有更多项目的消息,那么您可以识别此元素。 将页面向下选项放在while循环中,执行向下翻页直到满足条件。 这样您就可以完全加载页面的所有内容。 如果您需要更多帮助,请告诉我。

使用.Net 4.5和Selenium WebDriver 2.45在C#中的示例

只需将_url变量更改为指向您的网站并运行即可。

我使用的是ChromeDriver,但它也可以与其他驱动程序一起使用。

 using System; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; namespace SeleniumScrollTest { internal static class Program { // Declare Selenium Web Driver private static IWebDriver _chromeDriver; private static String _url; private static void Main(string[] args) { // Instantiate URL _url = @"http://my.website.com/LazyLoadContent"; // Instantiate Web Driver as ChromeDriver and set initial URL _chromeDriver = new ChromeDriver {Url = _url}; // Instruct the WebDriver to wait X seconds for elements to load _chromeDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(15)); // Instantiate JavaScript Executor using the web driver var jse = (IJavaScriptExecutor) _chromeDriver; // The minified JavaScript to execute const string script = "var timeId=setInterval(function(){window.scrollY 

如果您已经对Selenium和C#有了一定的了解,那么重要的一点就是JavaScript。 - 来自Cyber​​maxs , 在这里

  var timeId = setInterval(function () { if (window.scrollY !== document.body.scrollHeight) window.scrollTo(0, document.body.scrollHeight); else clearInterval(timeId); }, 500); 

上面的500是它将尝试滚动的间隔(以微秒为单位),根据需要进行调整。 [1000微秒= 1秒]