2016-05-18 195 views
2

控制量角器測試執行順序的最佳方法是什麼?量角器測試的執行順序

問題1:量角器如此快速地掃過角頁面以至於無法操作(填充)輸入數據。 (滑動邏輯將從不可見轉換爲可見,並將它們翻譯成窗口可見區域)。因此量角器無法看到超出窗口和不透明度0的人。爲了測試我只能填寫第一頁。其他人被刷得太快(或異步)。

問題案例2:在填寫第一頁並提交表格後,數據被保存並且警報顯示確認消息。然後量角器必須單擊一個下拉列表,瀏覽器應該導航到保存數據顯示的頁面。問題在於量角器在保存數據之前單擊下拉列表,由於稍後發出警報(必須等待警報)。

問題是:有沒有辦法控制在量角器中按給定順序執行測試?是否有辦法按住滑動來填寫日期(否則量角器不會看到它)?這裏是簡化代碼:

it('should fill in form and send data', function() { 

      // fill in textarea field 
      element.all(by.css('textarea')).first().clear().sendKeys('test'); 

      // goes to page 2 
      browser.executeScript("angular.element(document.documentElement) 
.injector().get('$rootScope').$broadcast('nextPage', {direction: 'next'});"); 

      // Here is Problem 1. Though i can see this page when testing, 
      // the input is not visible for protractor. 
      // fill in input-field 
      element.all(by.css('input')).first().clear().sendKeys('test');  

      // goes to page 1 
      browser.executeScript("angular.element(document.documentElement) 
.injector().get('$rootScope').$broadcast('prevPage', {direction: 'prev'});"); 


      // submit form 
      element(by.css('button[type=submit]')).click(); 

      // Here is problem 2. The following test is executed earlier 
      // than the following alert. 
      //browser.wait(protractor.ExpectedConditions.alertIsPresent(), 3000); 
      var alertDialog = browser.switchTo().alert(); 
      expect(alertDialog.getText()).toEqual('Saved'); 
      alertDialog.accept(); 

     }); 


it('should click drop-down-list', function() { 
    // click drop-down list 
    element(by.css('.drop-down-list')).click(); 
}); 
+0

的代碼片段添加您的測試之間的等待 – Emna

+0

親愛的Emna,這個額外的等待阻止警報和警報從不顯示。或者我做錯了什麼。你能不能展示一個有效的代碼示例? –

+0

我甚至試過browser.controlFlow()。timeout(3000);但它也會阻止警報。可能是我應該考慮browser.controlFlow()。execute(function(){browser.controlFlow()。execute(test); });但不知道如何通過觀察,以便它們應該被看到。 –

回答

0

我個人認爲browser.sleep(5000)應該解決第二個問題。

如果不是你能用promisies

element(by.css('button[type=submit]')).click().then(function(){ 
    var alertDialog = browser.switchTo().alert(); 
    expect(alertDialog.getText()).toEqual('Saved'); 
    alertDialog.accept(); 
}); 

嘗試這應該等待承諾得到解決(即點擊提交按鈕),然後執行內部