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