2017-03-25 3 views
1

Ich versuche zu ermitteln, ob ein angemeldeter Benutzer ein Kunde eines Unternehmens ist. Ich habe ein Div, das die Manager-ID zeigt, wenn die Person, die sich anmeldet, eine Krippe ist und auf den Login-Bildschirm umleitet, falls dies nicht der Fall ist. Ich möchte bedingt testen, ob die Konto-ID, die versucht, sich einzuloggen, ein Kunde oder Manager ist und verschiedene Dinge tun, wenn das eine oder andere der Fall ist. Wenn der Test als wahr gilt, ist alles in Ordnung und das Versprechen ist gelöst, aber wenn es nicht gelingt, bleibt der Test stehen (wartet auf eine Antwort, bis die Wartezeit abgelaufen ist), anstatt ein falsches Ergebnis zu liefern.Rückgabe eines booleschen Werts anstelle eines erfolgreichen Fehlers im Winkelmesser

.then(browser.executeScript('return window.find("isCompany:true");')), 
.then(function() { 
     return expect(browser.wait(EC.textToBePresentInElement(element(by.id("url")), qr), wait)).toBe(true); 
    }, function() { 
      .... 
    }); 

Antwort

1

Ich denke, man die Versprechen von browser.wait() zurück lösen müssen:

browser.wait(EC.textToBePresentInElement(element(by.id("isCompany")), 'true'), wait).then(function() { 
    // user is a customer 
}, function() { 
    // user is not a customer 
}); 
+0

Nö, das Ergebnis ist im Wesentlichen das gleiche Problem, wenn die Test löst sich als wahr, alles ist in Ordnung und das Versprechen ist wahr, aber wenn es scheitert, bleibt der Test stehen (wartet auf eine wahre Antwort, bis das Warten seinen Lauf genommen hat), anstatt ein falsches Ergebnis zu geben. – SomeoneElse

0

Ich denke, es wäre einfacher, wenn Sie Setup eine Hilfsfunktion den Wert von ExpectedConditions.textToBePresentInElement zurückzukehren. Dann müssen Sie sich keine Sorgen machen, die Versprechen zusammen zu ketten. Ich benutze eine Hilfsklasse namens Utils, um so ziemlich dasselbe zu erreichen wie das, was Sie tun. Hier ist ein Beispiel

Im utils Klasse I haben:

function waitForElementText(element, elementText) { 
    return browser.wait(this.ec.textToBePresentInElement(element, elementText), this.timeout); 
} 

Code verwenden Schnipsel würden Sie es wie folgt verwenden:

util.waitForElementText(element, elementText) 
    .then(function (isCompany) { 
     if(isCompany) { 
      // do something 
     } else { 
      // do something else 
     }    
} 
Verwandte Themen