等待使用python

等待使用python,python,webdriver,protractor,Python,Webdriver,Protractor,我找到了这个答案,但我不是在测试angularjs应用程序,而是Angular2。 寻找一段类似的js代码来执行,直到angular完成 我想出了一个装饰器的想法,我会在触摸应用程序之前使用它,但我不知道脚本想要什么,我查看了clientsidescripts.js,但我不是一个有角度的开发人员,它似乎有NG1hook和可测试性。。。所以,也许我可以增加一些零碎的东西,把它们放到一个js文件中,然后执行它,比如像这个家伙一样,但这也是2015年的事 def angular_wait_requi

我找到了这个答案,但我不是在测试angularjs应用程序,而是Angular2。

寻找一段类似的js代码来执行,直到angular完成

我想出了一个装饰器的想法,我会在触摸应用程序之前使用它,但我不知道脚本想要什么,我查看了clientsidescripts.js,但我不是一个有角度的开发人员,它似乎有NG1hook和可测试性。。。所以,也许我可以增加一些零碎的东西,把它们放到一个js文件中,然后执行它,比如像这个家伙一样,但这也是2015年的事

def angular_wait_required(f):

        def wrapped_f(self, *args, **kwargs):
            self.driver.set_script_timeout(30)
            self.driver.execute_async_script(WAIT_FOR_SCRIPT)
            f(self, *args, **kwargs)
        return wrapped_f

这就是我最后想到的

太好了。甚至没有给我机会去编辑它和纠正打字错误
WAIT_FOR_SCRIPT = """
        callback = arguments[arguments.length - 1];
        try {
            var testabilities = window.getAllAngularTestabilities();
            var count = testabilities.length;
            var decrement = function() {
            count--;
            if (count === 0) {
              callback('completed');
                }
            };
            testabilities.forEach(function(testability) {
                testability.whenStable(decrement);
            });
         } catch (err) {
            callback(err.message);
         }
        """