2017-06-29 61 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); 
     } 
     """ 

這就是我想出到底