2017-06-29 59 views
-1

我发现这个答案可是我没有测试angularjs应用程序,但角度2. Testing AngularJS with Selenium等待角使用python

寻找一个类似的一段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

那么甜蜜。甚至没有给我一个编辑它的机会,并纠正错别字 – rafalf

回答

0
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); 
     } 
     """ 

这就是我想出到底