2016-08-16 1 views
0

Ich mache einige Tests in Protractor und stieß auf ein kleines Problem:Winkelmesser: Wie kann man erwarten, dass die URL des Browsers der URL entspricht, die nach der Registrierung eines neuen Benutzers eine ID hat?

ich einen Test gemacht um einen neuen Benutzer zu registrieren, wenn ich es fertig Registrierung der URL wird so etwas wie diese:

#/user/592/profile 

Also, meine Frage ist, wie kann ich es schaffen, die ID des neuen Benutzers zu bekommen, um eine wahre in meinem Test zu erhalten? Etwas wie dieses:

expect(browser.getCurrentUrl()).toEqual(browser.baseUrl+#/user/ID_OF_NEW_USER/profile); 

Wie kann ich das tun? Wenn es natürlich möglich ist.

Antwort

0

Der folgende Code funktioniert für eine beliebige Anzahl von Ziffern in der Benutzer-ID.

browser.getCurrentUrl().then(function(url){ 
    var user_id=url.split("user/")[1].replace("/profile",""); 
    //it will return exactly user_id value 
    expect(browser.getCurrentUrl()) 
     .toEqual(browser.baseUrl+"#/user/"+user_id+"/profile"); 

}); 
+0

Danke, das funktioniert auch! Kannst du mir bitte diese Zeile erklären? var user_id = url.split ("Benutzer /") [1] .replace ("/ profile", ""); –

+0

Nehmen wir an, Ihre URL lautet 'www.example.com/#/user/592/profile'. url.split ('user /') wird Ihre URL-Zeichenfolge mit dem Trennzeichen als "user /" teilen und die Ausgabe wird ein Array ["www.example.com/#/","592/profile"] sein. Jetzt nehmen wir den zweiten Wert aus dem Array und ersetzen das Wort '/ profile' durch einen leeren Wert. also wird die Ausgabe sein '(" 592/profile "). ersetzen ("/profile ",) => 592' –

+0

Oh, jetzt verstehe ich, vielen Dank, es wird sehr nützlich für mich in einer Zukunft, ich werde deine Antwort wählen, da es für die gesamte Länge von user_id funktioniert und weniger Codezeilen verwendet :) Vielen Dank! –

0

In Ihrem Fall wird User_Id dynamisch generiert. Sie müssen also einen benutzerdefinierten Code schreiben, um die neue Benutzer-ID auszuwählen und sie im erwarteten Zustand zu verwenden. Sie können folgenden Codeausschnitt folgen:

Code: 

    browser.getCurrentUrl().then(function(url){ 
     var startIndex=(url.indexOf("user/"))+5; 
     var endIndex=(url.indexOf(startIndex))+2; 
     var user_id=url.substr(startIndex,endIndex); 
     //it will return exactly user_id value 
     expect(browser.getCurrentUrl()) 
      .toEqual(browser.baseUrl+"#/user/"+user_id+"/profile"); 

    }); 
+1

Dies wirft mir diesen Fehler: - Fehlgeschlagen: indexOf ist nicht definiert –

+0

@LuisPabloLopez haben Code aktualisiert, kann u versuchen –

+0

jetzt denke ich, ist es fast funktioniert, ist es nun diesen Fehler werfen: -Erwartete ‚http://myapp.app/#/user/596/profile 'gleich' http://myapp.app/#/user/ser/596/profile/profile '. Wie Sie sehen können "ser" und das letzte "Profil" sollte nicht dort –

Verwandte Themen