Die Variable kann nicht gefunden werden: Seite in PhantomJS

8

Ich bin Anfänger im Test, sowohl im Unit Test als auch im UI Test

Ich versuche, einen UI-Test für meine Anmeldeseite mit folgendem Code zu erstellen:

%Vor%

Aber dieser Code gibt den folgenden Fehler zurück:

%Vor%

Wo Element $("#numeroUsuario") existiert. Was habe ich falsch gemacht?

    
Lai32290 05.10.2015, 17:51
quelle

2 Antworten

3

Ziemlich sicher, dass Sie in einer page.evaluate -Umgebung nichts aus dem Phantom-Skript referenzieren können.

In Ihrem Fall könnten Sie tatsächlich mehrere Evaluierungsaufrufe haben:

%Vor%     
Platinum Azure 05.10.2015, 17:57
quelle
10

Die Dokumentation sagt Folgendes über den Seitenkontext (Hervorhebung von mir):

  

Die Ausführung ist sandboxed , die Webseite hat keinen Zugriff auf das phantom -Objekt und kann ihre eigene Einstellung nicht testen .

Dies bedeutet, dass auf Variablen, die außerhalb der Callback-Funktion page.evaluate() definiert sind, nicht zugegriffen werden kann. Dies bedeutet auch, dass sich this auf das Objekt window bezieht.

Sie können den page.evaluate() -Aufruf natürlich in mehrere Aufrufe aufteilen und verschieben Sie die Aufrufe, die äußere Variablen verwenden, zwischen den page.evaluate() -Anrufen wie Platinum Azure zeigte , aber dies funktioniert nicht, wenn Sie eine PhantomJS-Funktion innerhalb eines Callbacks innerhalb des page.evaluate() -Rückrufs aufrufen möchten.

Die Lösung wäre, das window.callPhantom und page.onCallback Paar zu verwenden. Dies ist ideal für asynchrone Funktionen:

%Vor%

Der Ausgang könnte die zuvor ausgelöste Renderoperation stören. Es ist sicherlich möglich, den Ausgang in diesem Fall um eine bestimmte Zeit wie etwa eine halbe Sekunde zu verzögern:

%Vor%

Außerdem ist es nicht möglich, das Objekt page in den Seitenkontext zu übergeben, da nur serialisierbare Objekte übergeben werden können:

  

Hinweis: Die Argumente und der Rückgabewert für die evaluate -Funktion müssen ein einfaches primitives Objekt sein. Die Faustregel: Wenn es über JSON serialisiert werden kann, ist es in Ordnung.

     

Verschlüsse, Funktionen, DOM-Knoten usw. funktionieren nicht !

    
Artjom B. 05.10.2015 19:18
quelle

Tags und Links