我正在寻找一种向下滚动到页面的方法,该页面在滚动内容时加载内容,以便在我开始使用Selenium与其进行交互之前加载所有内容。
我发现下面的代码是为c#发布的,我把它改成了Java。它编译并运行。但即使页面到达终点,它也不会脱离循环
Boolean readyStateComplete = false;
while (!readyStateComplete)
{
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("window.scrollTo(0, document.body.offsetHeight)");
readyStateComplete = (String) executor.executeScript("return document.readyState") == "complete";
}
我对Javascript了解不多。如何纠正?
答案 0 :(得分:2)
请尝试.equals()
方法,而不是==
我的意思
readyStateComplete = ((String) executor.executeScript("return document.readyState")).equals("complete");
==测试引用相等性(它们是否是同一个对象)。
.equals()测试值的相等性(无论它们是否合乎逻辑 “相等”)。
答案 1 :(得分:1)
向下滚动页面并等待加载内容的更好方法是使用- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
@synchronized(self) {
// Quickly return persistent store coordinator if available
if (__persistentStoreCoordinator != nil) {
return __persistentStoreCoordinator;
}
// Persistent store coordination initialization, to be performed once
// ...
}
return _persistentStoreCoordinator;
}
,然后等待滚动高度更改并使状态准备就绪:
executeAsyncScript