Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium-使用量角器javascript代码进行页面等待_Java_Angularjs_Selenium_Protractor - Fatal编程技术网

Selenium-使用量角器javascript代码进行页面等待

Selenium-使用量角器javascript代码进行页面等待,java,angularjs,selenium,protractor,Java,Angularjs,Selenium,Protractor,我正在测试angularjs页面,并使用selenium(java)为其编写自动化脚本 下面是我在继续下一个屏幕操作之前用于页面同步等待的代码 public static boolean angularHasFinishedProcessing() { ExpectedCondition<Boolean> pageLoadCondition = new ExpectedCondition<Boolean>() { @Override

我正在测试angularjs页面,并使用selenium(java)为其编写自动化脚本

下面是我在继续下一个屏幕操作之前用于页面同步等待的代码

public static boolean angularHasFinishedProcessing() {
    ExpectedCondition<Boolean> pageLoadCondition = new ExpectedCondition<Boolean>() {
        @Override
        public Boolean apply(WebDriver driver) {
            driver = GetDriver();//This is to get the driver in current action.
            String hasAngularFinishedScript = "var callback = arguments[arguments.length - 1];\n" +
                    "var el = document.querySelector('html');\n" +
                    "if (!window.angular) {\n" +
                     "console.log('1'); \n" +
                    "    callback('false')\n" +
                    "}\n" +
                    "if (angular.getTestability) {\n" +
                    "    angular.getTestability(el).whenStable(function(){callback('true')});\n" +
                    "} else {\n" +
                    "console.log('hello3'); \n" +
                    "    if (!angular.element(el).injector()) {\n" +
                    "        callback('false')\n" +
                    "    }\n" +
                    "    var browser = angular.element(el).injector().get('$browser');\n" +
                    "    browser.notifyWhenNoOutstandingRequests(function(){callback('true')});\n" +
                    "}";

            JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
            String isProcessingFinished = javascriptExecutor.executeAsyncScript(hasAngularFinishedScript).toString();

            return Boolean.valueOf(isProcessingFinished);
        }
    };

    WebDriverWait wait = new WebDriverWait(driver, 60);
    boolean bRet = (wait.until(pageLoadCondition));
    if (bRet) {
        return bRet;
    } else
        return false;
}
public静态布尔angularHasFinishedProcessing(){
ExpectedCondition pageLoadCondition=新的ExpectedCondition(){
@凌驾
公共布尔应用(WebDriver驱动程序){
driver=GetDriver();//这是为了获取当前操作中的驱动程序。
字符串hasAngularFinishedScript=“var callback=arguments[arguments.length-1];\n”+
“var el=document.querySelector('html');\n”+
“如果(!window.angular){\n”+
“console.log('1');\n”+
“回调('false')\n”+
“}\n”+
“如果(角度.可获取性){\n”+
“angular.getestability(el).whenStable(函数(){callback('true')});\n”+
“}其他{\n”+
“console.log('hello3');\n”+
“如果(!angular.element(el.injector()){\n”+
“回调('false')\n”+
“}\n”+
“var browser=angular.element(el.injector().get(“$browser”);\n”+
“browser.notifyWhenNoOutstandingRequests(函数(){callback('true')});\n”+
"}";
JavascriptExecutor JavascriptExecutor=(JavascriptExecutor)驱动程序;
字符串isProcessingFinished=javascriptExecutor.executeAsyncScript(hasAngularFinishedScript.toString();
返回布尔值.valueOf(isProcessingFinished);
}
};
WebDriverWait wait=新的WebDriverWait(驱动程序,60);
布尔值bRet=(wait.until(pageLoadCondition));
如果(bRet){
返回布雷特;
}否则
返回false;
}
问题是isProcessingFinished始终为false,控制台始终写入1(表示window.angular始终返回false)

此外,由于在执行过程中无法调试javascript代码段,因此我不知道是否还有其他问题。有人能帮忙吗?

1)了解如何调试javascript

在此等待函数之前添加一个断点,运行脚本直到在该断点处停止,打开浏览器的DevTool并在控制台选项卡中执行
window.angular
,查看是否正确

您可以在控制台选项卡中继续执行javascript代码片段的其余代码行,以检查任何代码问题或按预期工作。

1)了解如何调试javascript

在此等待函数之前添加一个断点,运行脚本直到在该断点处停止,打开浏览器的DevTool并在控制台选项卡中执行
window.angular
,查看是否正确


您可以继续在console选项卡中执行javascript代码片段的其余代码行,以检查任何代码问题或按预期工作。

您可以使用条件语句来处理可疑代码和量角器屏幕截图功能,而不是登录errorsSelenium太低级库,因此您应该使用它的一些包装器。看一看,在那里你可以使用智能等待,它会解决你所有的问题。变量
窗口。当你在控制台中检查时,角度
会出现?你可以使用条件语句来显示可疑代码和量角器屏幕截图功能,而不是登录错误Selenium太低级库,所以你应该用一些包装纸。看一看,您可以在那里使用智能等待,它将解决您的所有问题。当您在控制台中检查时,变量
窗口是否存在?