2016-11-01 3 views
1

Ich habe Probleme mit dem ignoreSynchronization-Winkelmesser.Winkelmesser erkennt das Element nicht, obwohl es sichtbar ist

Ich konnte mich nicht anmelden, ohne browser.ignoreSynchronization = true zu verwenden. Nach dem Login wurde ignoreSynchronization nicht mehr benötigt.

Hier wird der Login-Code ist:

browser.driver.get('xxx'); 

browser.ignoreSynchronization = true; 

$('#input-idCode').sendKeys(idCode); 
$('#input-phoneno').sendKeys(mobileNum); 
$('.mobile-id').click(); 

browser.wait(EC.presenceOf(nextButton), 15000); 
browser.ignoreSynchronization = false; 

Im nächsten Fall, teste ich auch Angular Website, aber die gleiche Lösung nicht mehr funktionierte. Nach der Anmeldung werde ich auf die Hauptseite umgeleitet und erhalte die Fehlermeldung: Fehlgeschlagen: Zeitüberschreitung beim Warten, bis der Winkelmesser nach 60 Sekunden mit der Seite synchronisiert wurde. obwohl das Element, mit dem ich interagieren möchte, sichtbar ist.

Was könnte das Problem sein? Ich möchte keine Tests mit ignoreSynchronization = true ausführen.

+0

beheben Wenn Ihr Fehler „Timed Warten Sie auf Protractor zu synchronisieren ...“ ist, das ist nicht auf Elemente im Zusammenhang. Fragen Sie Ihre Entwickler, ob die App fortlaufend $ http oder $ timeout abfragt, die normalerweise in einem keepAlive-Dienst verwendet werden. Siehe [dieses Dokument] (https://github.com/angular/protractor/blob/master/docs/timeouts.md) als Referenz. – Gunderson

Antwort

0

Timed out waiting for Protractor to synchronize with the page after 50001ms

Das Problem, das ich hatte: Ihre Seite ist Timeout Abfrage $ oder http wiederholt $. Der Winkelmesser wird nichts tun, bis Angular einen "Ruhezustand" erreicht hat (alle Elemente und Datenbindungen sind geladen und alle Anfragen sind zurückgekehrt).

$ Intervall anstelle von $ timeout oder http $ sollte das Problem

0

In Ihrem Code werden get, sendKeys und click asynchron ausgeführt, aber browser.ignoreSynchronization wird synchron zugewiesen. Wenn der Steuerungsablauf driver.get ausführt, ist die Eigenschaft ignoreSynchronization bereits auf false festgelegt.

Um dieses Problem zu überwinden, drücken Sie die Zuordnung in dem Steuerfluss:

browser.driver.get('xxx'); 

browser.controlFlow().execute(function() { 
    browser.ignoreSynchronization = true; 
}); 

$('#input-idCode').sendKeys(idCode); 
$('#input-phoneno').sendKeys(mobileNum); 
$('.mobile-id').click(); 

browser.wait(EC.presenceOf(nextButton), 15000); 

browser.controlFlow().execute(function() { 
    browser.ignoreSynchronization = false; 
}); 
+0

Leider hat es bei mir nicht funktioniert. Der Winkelmesser loggt sich nicht mehr ein und wartet nur auf $ ('# input-idCode') Element. Fehlermeldung: Fehlgeschlagen: Zeitüberschreitung beim Warten auf die Synchronisierung des Winkelmessers mit der Seite nach 60 Sekunden. Bitte sehen Sie https://github.com/angular/protractor/blob/master/docs/faq.md Beim Warten auf Element mit Locator - Locator: By (CSS-Selektor, # Input-IDCode) –

+0

Haben Sie versucht, die zu ignorieren sync before 'browser.driver.get ('xxx');'? –

+0

'browser.ignoreSynchronization = true; browser.driver.get ('xxx'); $ ('# Benutzername'). SendKeys (Benutzername); $ ('# password') sendKeys (password); $ ('. Btn-primary'). Click(); browser.ignoreSynchronization = false; browser.wait (EC.presenceOf ($ ('. Left_action')), 20000); ' Das funktioniert bei mir auch nicht ... –

Verwandte Themen