我找到了这个答案但是我没有测试angularjs app但是没有测试角度2。 Testing AngularJS with Selenium
寻找类似的js代码来执行以等待角度完成。
我想出了一个装饰师的想法,我会在触摸应用程序之前等待,但我不会这样做。知道脚本会想要什么,我看了一下clientsidescripts.js,但我不是一个Angular开发人员,似乎它得到了ng1hooks和可测试性......所以也许我可以添加一些零碎的东西并将它们放入一个js文件中并执行它,例如喜欢这个家伙https://github.com/kpodl/pytractor/blob/master/src/pytractor/protractor/extracted/waitForAngular.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
答案 0 :(得分:1)
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);
}
"""
这是我最终提出的