我正在使用 Selenium Webdriver 来获取网页的内容。当用户使用 AJAX 向下滚动时,页面会加载更多内容。我可以使用 javascript 向下滚动,但不知道何时停止滚动。我怎么知道什么时候不能再向下滚动?我不能使用 document.clientheight 或任何高度属性,因为当窗口太小但元素都附加到 DOM 时它们处理滚动,因此它们的高度是已知的。在这里,元素被动态地附加到 DOM,所以高度是事先不知道的。
我怎么知道我什么时候到达了谷底?某处是否有“滚动条不可滚动”条件?或者,如果正在加载更多内容并且滚动条还不能滚动,但很快就会触发?
谢谢,bsg
更新
对我有用的答案实际上是针对我的另一个问题(这个问题是那个问题的一个更精确的子集)。即,使用 jquery 测试以下等价性: $(document).height() == ($(window).height() + $(window).scrollTop();。如果它的计算结果为 true,则您已经达到页面底部。(有关此工作原理的解释,请参阅$(window).scrollTop() == $(document).height() - $(window).height() 的含义)我不是确定这是否可以在没有 jquery 的情况下工作,所以如果您正在测试的页面没有 jquery,您可能应该使用下面的 user1177636 的答案。
我使用的确切代码是:
JavascriptExecutor js = (JavascriptExecutor)driver;
do{
//scroll down and do whatever processing you need
reachedbottom = Boolean.parseBoolean(js.executeScript("return $(document).height() == ($(window).height() + $(window).scrollTop());").toString());
}while(!reachedbottom);
希望这可以帮助某人。