2017-05-19 6 views
1


Ich bin ziemlich neu zu Winkelmesser und ich bin nicht mit der Art zufrieden, wie ich den Code unten schrieb (der tatsächlich arbeitet).
Ich möchte einfach die Zählung in einer Variablen (hier, "nb_before") speichern und später wiederverwenden, aber der Verheißungsmechanismus erlaubt es mir nicht, es präzise zu machen, also habe ich beschlossen, alles in die gleiche Funktion zu bringen. Aber es ist so hässlich.
Fehle ich etwas?
Mit freundlichen Grüßen

Wie man Elementzählung in Winkelmesser richtig speichert

// We count the lines, we click on a button which adds a new line, 
    // then we verify that the new line has a specific text. 

    it("Test case", function() { 
     browser.get(browser.baseUrl); 
     var button = element(by.xpath("//whatever")); 
     var rows = element.all(by.xpath("//whatever")); 
     rows.count().then(function(count){ 
      nb_before = count; 
      button.click(); // adds a line 
      var nb_after = nb_before + 1; 
      var new_line = element(by.xpath("//li[" + nb_after + "]")); 
      expect(new_line.getText()).toEqual("yay"); 
     }); 
    }); 
+0

Wo möchten Sie es wiederverwenden? Sie können "nb_before" loswerden und einfach "count" verwenden. –

+0

Im Pseudocode möchte ich folgendes tun: 'var nb_before = element.all (by.xpath (" // was auch immer "). Count(); // sowas prägnant (ich komme aus der Java-Welt und es ist in diesem Fall einfacher) '(ohne all die Verheißungsstruktur) Und ich möchte' nb_before' nicht loswerden, weil ich wissen will ob a Zeile wurde tatsächlich hinzugefügt. –

Antwort

2

Es sieht aus wie Sie .last() method hier verwendet haben, könnten die letzte Reihe zu bekommen:

it("Test case", function() { 
    browser.get(browser.baseUrl); 

    var button = element(by.xpath("//whatever")); 
    var rows = element.all(by.xpath("//whatever")); 

    button.click(); // adds a line 

    expect(rows.last().getText()).toEqual("yay"); 
}); 

Wir können aber, bevor die Zählung erhalten und nach der Schaltfläche klicken und Überprüfen Sie, ob es um eins erhöht wurde - dies erfordert immer noch, dass wir verwenden, um das Versprechen zu lösen, das von .count():

var button = element(by.xpath("//whatever")); 
var rows = element.all(by.xpath("//whatever")); 

rows.count().then(function (countBefore) { 
    button.click(); 
    expect(rows.count()).toEqual(countBefore + 1); 
}); 
zurückgegeben wird
+0

Hallo, danke für deine Antwort, aber es hilft mir nicht beim Speichern der Elementanzahl. Ich werde nicht immer das letzte Element überprüfen müssen. Manchmal benutze ich die Elementzahl, um auf ein zufälliges Element zu klicken Danke, –

+0

@ Y-BCause richtig, aber, der Punkt ist, müssen Sie wirklich wissen, die Zählung? Hier, wir sind nur in der letzten Zeile, ohne zu wissen, wie viele Zeilen gibt es .. – alecxe

+0

In diesem Fall, Ich stimme dir völlig zu, ich könnte eine Abhilfe finden, aber das ist nicht die po int, ich möchte lernen, wie ich in jedem Kontext die Zählung in einer Variablen speichern könnte. –