2017-06-06 1 views
1

Gibt es eine Möglichkeit, zufällige oder wenige Werte, die vom Element.all-Array zurückgegeben werden, zu verwerfen oder zu entfernen?Ausrangieren einiger Array-Werte zum Aktivieren (Winkelmesser)

Das Szenario, das ich versuche zu automatisieren, ist zu überprüfen, dass das Wort "HTML" in jeder Zeile vorhanden sein sollte, die von der Array-Liste zurückgegeben wird.

Ich habe die w3Schools als Dummy-Test-Website verwendet, um mein Szenario zu testen, unten ist der Code, der wegen Assertion versagt.

describe('Searching for word HTML', function() { 
    var array=[]; 
    var counter=0; 
    it('Beginning of the test', function() { 

    browser.ignoreSynchronization = true; 
    browser.get('https://www.w3schools.com/html/default.asp'); 

    browser.sleep(5000).then(function(){}); 

    var lines = element.all(by.css('#leftmenuinnerinner>a')); 
    lines.count().then(function(counting){ 
     console.log("There are total "+counting+" links"); 
     counter=counter+counting; 
     return counting; 
    }) 
    lines.getText().then(function(text){ 

     console.log("Values:::: "+text); 
     for(var k=0;k<text.length;k++){ 
     expect(text[k]).toContain('HTML'); 
     } 
    }) 
    }) 
}) 

weiß ich, ich nur den XPath-Wert & Iterierte durch eine Schleife von 76 Werten verwenden könnte, aber ich über einen Ansatz von CSS-Selektor versuchen & ich brauche unbedingt die gesamte Liste der Werte zu erhalten, so gibt es eine So konnte ich die Werte "HTTP-Nachrichten", "HTTP-Methoden", "PX to EM Converter" & "Tastaturkürzel" dynamisch durch meinen Code aus dem Array schneiden oder verschrotten, der zurückgegeben wurde, so dass meine Behauptung bestanden wird?

Antwort

2

Sie die filter Methode nur verwenden können, um die Elemente zu halten den Text enthält, die Sie wollen. - http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.filter

lines.filter(function(elem, index) { 
    return elem.getText().then(function(text) { 
    return text.includes('HTML'); 
    }); 
}) 

Oder Sie können die cssContainingText Locator verwenden, um die gewünschten Elemente zu erhalten. - http://www.protractortest.org/#/api?view=ProtractorBy.prototype.cssContainingText

var lines = element.all(by.cssContainingText('#leftmenuinnerinner>a','HTML')); 
Verwandte Themen