2017-06-13 2 views
0

Ich bin ein Test ausgeführt wird, der überprüft, ob ein div bestimmten Text enthält. Wenn es diesen Text enthält, möchte ich dann sehen, ob ein Link weiter unten auf der Seite den gleichen Text enthält. Wenn ein Benutzer einen EUR- und einen USD-Saldo in der Kopfzeile der Seite anzeigt, wird die Registerkarte weiter unten einen Link mit dem Namen "EUR" und ein weiterer Tab einen Link mit dem Text "USD" enthalten.Protractor: Erwartet [true, true] um wahr zu sein

Wenn ich mein Skript ausführen bekomme ich den Fehler:

Expected [ true, true ] to be true. 

Das ist mein Code aus der Datei Seite Objekt ist

browser.wait(EC.visibilityOf(element(by.className("currencies")), 4000)); 
 
    var checkBalance = element(by.className("currencies")); 
 
     checkBalance.getText().then(function (text) { 
 
      if(text.indexOf("EUR") >-1 && text.indexOf("GBP") >-1){ 
 
     //check if currencies div contains "EUR" and "GBP" 
 
      expect(element.all(by.linkText("EUR" && "GBP")).isDisplayed()).toBe(true); 
 
    //check if link with text "EUR" and link with "GBP" is displayed 
 
     }

+1

Versuchen Sie es mit '.toBeTruthy();', wenn Sie mehr als ein Element, das entspricht? –

+0

Danke, vorher hatte ich .toBeTruthy() benutzt und musste aufBeTrue() umschalten und hatte es in der Zwischenzeit vergessen. Das hat mir geholfen! – Edmond

Antwort

0

Beachten Sie, .toBeTruthy() zu verwenden, siehe this post.

Der Grund, warum bekommt man Expected [ true, true ] to be true. ist, weil Sie element.all(by.linkText("EUR" && "GBP")).isDisplayed() verwenden, das ein Array mit dem .isDisplayed() Ergebnis jeder element zurückkehren wird (weil Sie .all verwenden).

Was wissen Sie haben eine falsche positive zu schaffen. Sie können dies testen, indem Sie die expect(element.all(by.linkText("EUR" && "GBP")).isDisplayed()).toBeTruthy(); zu expect(element.all(by.linkText("Bar" && "Foo")).isDisplayed()).toBeTruthy(); Beide werden erfolgreich sein.

Wenn Sie BDD und TDD aussehen, dann ist es besser, zuerst einen fehlerhaften Testfall zu erstellen und dann den Testfalls Arbeit zu machen.

+0

Vielen Dank für Ihre Hilfe, ich habe versucht, 'toBe (true);' in meinem ursprünglichen Beitrag, aber das war nicht für mich arbeiten. Was ist BDD und TDD? Ich bin nicht wirklich sicher, wie es weitergeht – Edmond

+0

Wenn Sie 'ToBe();' verwenden möchten, dann verwenden Sie 'ToBe ([true, true]);' weil Sie ein Array mit einem Array vergleichen müssen. BDD = Verhaltensgetriebene Entwicklung, TDD = Test Driven Development. Hast du das auch mit nicht vorhandenen Linktexten versucht? – wswebcreation

+0

Danke für Ihre Antwort. Ja, es ist immer noch bestanden, als ich die Werte in "bar" und "foo" änderte. 'toBe ([true, true)];' hat mir sehr geholfen, danke. Mein Problem ist jetzt, dass, wenn ich 'expect (element.all (by.linkText (" EUR "&&" foo ")). IsDisplayed()) .be ([true, true]);' es wird so gehen wie es ist Erkennen von "EUR" als anwesend und es scheint nicht "foo" zu interessieren. Irgendeine Idee, wie ich diese Codezeile ändere, so dass es prüft, ob sowohl "EUR" als auch "GBP" vorhanden ist? Es wird scheitern, wenn ich gehen 'erwarten Tobe ([true, true]) (element.all (by.linkText ("bar" && "foo")) wirdangezeigt()..),' So es ist teilweise richtig – Edmond

Verwandte Themen