我有一页当我手动滚动它时,它会增长,然后我可以一次又一次地滚动它,直到滚动到达底部为止(一个很好的例子是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);

10-05 21:03
查看更多