waitForAngularRequestsToFinish() -- 有什么作用?

4

Java-Selenium

您好,我最近在使用selenium-java进行项目自动化。我发现许多代码都在使用这种方法。

waitForAngularRequestsToFinish();

我不太清楚为什么这个在主函数中。

以下是我的代码示例,因为我不知道在开头和结尾使用此方法的好处是什么。

public void ActualizarEstadoDeFinalizacion(String caso) {
        

        waitForAngularRequestsToFinish();
       JavascriptExecutor js = (JavascriptExecutor) getDriver();
       js.executeScript("window.scrollBy(850)");
        WebElement htmlScrollProblemaDeCierre = findBy(String.format("//*[@title='%s']//ancestor::div[@class='oneWorkspaceTabWrapper']//span/span[contains(.,'Estado de finalización')]//following::a[1]/parent::div/parent::div/parent::Div/parent::div",caso));
        
        htmlScrollProblemaDeCierre.click();
        waitForAngularRequestsToFinish();

}

1
你尝试过查看函数定义吗?另外,查看waitForAngularRequestsToFinish的文档可能会有所帮助。https://github.com/paul-hammant/ngWebDriver - Nikhil Sahu
2个回答

2

这段代码的作者创建了一个名为 waitForAngularRequestsToFinish() 的函数。

这是一种等待所有未完成请求加载的方式...

通常情况下,它将使用JavaScript实现... 您可以在Paul Hammant的ngWebDriver中看到。

如果您想自己实现它:

最初的回答

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("var injector = window.angular.element('body').injector(); var $http = injector.get('$http'); return ($http.pendingRequests.length === 0);")

在方法的开头和结尾使用它的好处是确保您访问的页面和您跳转到的页面都已经完全加载。

希望这能对您有所帮助!


非常感谢!我已经为最佳答案投票了。是你的。 - Fernando.F
@FernandoFernandez 很高兴能帮忙! - Moshe Slavin
如果这个/任何回答对您有帮助,可以点赞或接受该答案,以造福未来的读者。请查看:https://stackoverflow.com/help/why-vote。 - Moshe Slavin

0

这个方法 waitForAngularRequestsToFinish(); 用于等待 Angular 应用程序的元素或请求。此方法将等待直到所有请求完成。这在 Angular 应用程序中经常使用。有关详细信息,请检查给定链接中的文档。

https://github.com/paul-hammant/ngWebDriver


嗨,Saroj,你对我的答案有什么补充?(你的答案已经包含在我的答案中了……不要介意;-)) - Moshe Slavin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接