2016-05-18 10 views
2

Welches ist der beste Weg, die Ausführungsreihenfolge der Winkelmesserprüfungen zu kontrollieren?Ausführungsreihenfolge der Winkelmessertests

Problemfall 1: Winkelmesser wischt Winkelseiten so schnell, dass Eingabedaten nicht manipuliert (ausgefüllt) werden können. (Die Swipe-Logik soll von unsichtbar zu sichtbar übertragen und in den sichtbaren Fensterbereich übersetzt werden). damit kann der Winkelmesser die über das Fenster hinaus und mit der Opazität 0 nicht sehen. Zum Testen kann ich nur die erste Seite ausfüllen. die anderen werden zu schnell (oder asynchron) geklaut.

Problemfall 2: Nachdem ich die erste Seite ausgefüllt und das Formular abgeschickt habe, werden die Daten gespeichert und der Alarm zeigt eine Bestätigungsmeldung an. Dann muss der Winkelmesser auf eine Dropdown-Liste klicken und der Browser sollte zu der Seite navigieren, auf der die gespeicherten Daten angezeigt werden. Das Problem ist, dass der Winkelmesser auf die Dropdown-Liste klickt, bevor die Daten gespeichert werden, da der Alarm später ausgelöst wird (muss auf Alarm warten).

Frage ist: Gibt es eine Möglichkeit, Tests zu steuern, die in der angegebenen Reihenfolge im Winkelmesser ausgeführt werden? Und gibt es eine Möglichkeit, Wischen zu halten, um das Datum auszufüllen (sonst sieht der Winkelmesser es nicht)? Hier ist der vereinfachte Code:

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

fügen Sie eine Wartezeit zwischen dem Test den Code-Schnipsel ausführen – Emna

+0

Sehr geehrte Emna, Diese zusätzlichen warten blockiert Alarm und Warnung wird nie angezeigt. Oder ich mache etwas falsch. Könnten Sie bitte ein funktionierendes Codebeispiel zeigen? –

+0

Ich habe sogar versucht browser.controlFlow(). Timeout (3000); aber es blockiert auch Alarm. Vielleicht sollte ich browser.controlFlow() betrachten. Execute (function() { browser.controlFlow(). Execute (test); }); aber ich weiß nicht, wie ich hineingucken soll, damit sie gesehen werden. –

Antwort

0

Ich persönlich glaube, browser.sleep (5000) soll das zweite Problem beheben.

wenn nicht, können Sie mit promisies versuchen

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

Dies sollte warten, bis das Versprechen entschlossen zu erhalten (dh klicken Submit-Button) und dann in

Verwandte Themen