强制Selenium等待AngularJS

Sim*_*nas 5 python selenium angularjs

我该如何强迫python Selenium等待一秒钟,直到AngularJS完成页面解析并加载它需要的某些内容。

或者如何在按钮单击后强制Selenium等待1秒,这会导致对AngularJS处理的服务器的Ajax请求。在导航到其他页面之前,我需要进行服务器端操作。

Leb*_*ses 3

通过 Selenium 访问 AngularJS 作用域 - 很可能该状态已保存在 Scope/IsolatedScope 中。

我构建了一些扩展来帮助解决这个问题,这些扩展可以转换为 python。

webDriver.NgWaitFor(productDiv, "scope.Data.Id != 0");
webDriver.NgWaitFor(partialElement, "scope.IsBusyLoadingTemplate == false");
Run Code Online (Sandbox Code Playgroud)

https://github.com/leblancmeneses/RobustHaven.IntegrationTests/blob/master/NgExtensions/NgWebDriverExtensions.cs

当您使用 angularjs $http 和 jquery 时,我使用以下方法处理 ajax 请求:

webDriver.WaitFor("window.isBrowserBusy() == false");
Run Code Online (Sandbox Code Playgroud)

要求您在 angularjs 和 jquery 中设置拦截来管理 xhr 请求的计数。

这是我们在项目中使用的框架:(您可能想从中提取更多内容)

https://github.com/leblancmeneses/RobustHaven.IntegrationTests