我有一个页面。当我手动滚动它时,它会变大,然后我可以一次又一次地滚动它,直到滚动到底部(一个很好的例子是 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/