正确使用Document.readyState与Selenium

时间:2016-04-29 07:36:21

标签: javascript java selenium

我正在寻找一种向下滚动到页面的方法,该页面在滚动内容时加载内容,以便在我开始使用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了解不多。如何纠正?

2 个答案:

答案 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