You need to enable JavaScript to run this app. Selenium Java等待AngularJS v1.6加载方法失效,求解决方案
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Java等待AngularJS v1.6加载方法失效,求解决方案

问题背景

已知存在多份同主题技术讨论帖,但目前检索到的所有解决方案均无法适配AngularJS v1.6版本。

已尝试的实现方案与故障表现

方案1:基于$browser服务的异步等待实现

public void waitForAngularRequestsToFinish() {
    while ((boolean) jsExec.executeScript(
            "return (typeof angular !== 'undefined')? true : false;")) {
        jsExec.executeAsyncScript(
                        "var callback = arguments[arguments.length - 1];"
                                + "angular.element(document.body).injector().get('$browser').notifyWhenNoOutstandingRequests(callback);");
    }
}

故障表现:该实现会直接陷入死循环,无法正常执行后续流程。

方案2:基于$http待处理请求计数的轮询实现

private void waitForAngularLoad() {
    String angularReadyScript = "return angular.element(document).injector().get('$http').pendingRequests.length === 0";
    angularLoads(angularReadyScript);
}

public void waitUntilAngularReady() {
    try {
        Boolean angularUnDefined = (Boolean) jsExec.executeScript("return window.angular === undefined");
        if (!angularUnDefined) {
            Boolean angularInjectorUnDefined = (Boolean) jsExec.executeScript("return angular.element(document).injector() === undefined");
            if (!angularInjectorUnDefined) {
                poll(20);

                waitForAngularLoad();

                poll(20);
            }
        }
    } catch (WebDriverException ignored) {
    }
}

故障表现:该方案执行后无任何生效表现,无法达到等待Angular空闲的预期效果。

当前诉求

目前已在该问题上完全陷入瓶颈,所有尝试的方法均无法正常运行,需要可适配AngularJS v1.6版本的可行解决思路或落地实现方案。

内容的提问来源于stack exchange,提问作者Kinder9211

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 08:36:03