c# - 将不断增长的页面滚动到底部

标签 c# javascript selenium-webdriver

我有一个页面。当我手动滚动它时,它会变大,然后我可以一次又一次地滚动它,直到滚动到底部(一个很好的例子是 facebook 时间轴页面)。

我试着写:

static IWebDriver driver = new ChromeDriver(@"C:\selenium\net40");
IJavaScriptExecutor js = driver as IJavaScriptExecutor;

然后我进入一个页面并做了:

js.ExecuteScript("window.scroll(0, document.height)");

但我可以滚动更多。

即使页面在增长,我怎样才能让它滚动到底部?

感谢任何帮助!

最佳答案

window.scroll(0, document.height) 将滚动到已知的可滚动区域。问题是当您到达页面底部时会下载更多数据。因此,可滚动区域发生了变化。您需要根据需要滚动多次。

例如使用这个脚本

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

编辑:

在某些页面上,window.scrollY 永远不会等于 document.body.scrollHeight,因此 setIntervanl 永远不会被清除:这会阻止您返回顶部.

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

关于c# - 将不断增长的页面滚动到底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613958/

相关文章:

javascript - 如何进行 knockout 搜索多个关键字以及实时搜索

java - 如何从测试类中删除实例 "driver"

python - 属性错误: 'WebElement' object has no attribute 'get_text' error extracting the text between the starting and ending tag using Selenium Python

c# - 如何使用 CSS 包含隐藏的 DIV 而不会占用空间?

c# - 构造函数注入(inject)和默认重载

c# - 限制每个方法的参数数量?

javascript - AND 和 OR 在一个 IF Javascript 中

php - 将 PHP 数组复制到 javascript 数组中

selenium-webdriver - VS Code 自动在 await 语句周围添加括号

c# - 如何跳过 Foreach 中的记录