Es gibt ähnliche Fragen (unten verlinkt), aber keine löst dieses Problem. Ich schreibe Winkeluntersuchungen für ein ionisches Projekt. Ich muss Tests durchführen, wenn ein ionischer Ladedialog erscheint und verschwindet.Warten auf ionische Ladedialoge mit Winkelmesser
Ich habe ein Repo mit den Grundlagen der App und den Tests erstellt, die gemacht werden müssen. Lösen Sie dies und Sie lösen das Problem (ich beschreibe das Problem unten): https://github.com/TmanTman/StackoverflowQ. Passen Sie den Pfad zu Ihrem Chrome für Ihr System in conf.js an.
einen asynchronen Ionic Laden Dialog zu simulieren ich dies nur in einem leeren Ionic Projekt in die Steuerung hinzu:
$interval(function() {
$ionicLoading.show({
template: 'Async ionicLoading',
duration: 5000
});
}, 5000 , 1);
})
Ich brauche Winkelmesser zu bekommen, um den Dialog zu warten einige Tests zu erscheinen, zu tun, warten der Dialog verschwindet und führt dann weitere Tests durch. Mein letzter Versuch in meiner Testdatei ist:
it('should only test when ionicLoading appears', function() {
browser.wait(function(){
return element(by.css('.loading-container.visible.active')).isPresent();
}, 10000);
var ionicLoadingText = element(by.css('.loading-container.visible.active')).getText();
expect(ionicLoadingText).toEqual('Async IonicLoading');
})
it('should only test once ionicLoading disappears', function() {
browser.wait(function() {
var deferred = protractor.promise.defer();
var q = element(by.css('.loading-container.visible.active')).isPresent()
q.then(function (isPresent) {
deferred.fulfill(!isPresent);
});
return deferred.promise;
});
expect(1).toEqual(1);
})
Ich versuche, synchrone Schlaffunktion zu vermeiden, da mein Code hoch asynchron ist. Ich habe unzählige Variationen ausprobiert, aber ich kann es nicht zur Arbeit bringen. Links I für Informationen verwendet haben, enthält:
- Protractor blocking wait
- Asynchronous Testing with Protractor's ControlFlow
- Protractor wait for isElementPresent and click on waited element fails
Welche Fehler haben Sie? Wird die Erwartung im ersten Block ausgeführt, bevor der Dialog erscheint oder gibt es einen Zeitüberschreitungsfehler? – Dziamid
Timeout-Fehler im ersten Block: "Fehlgeschlagen: Wartezeit abgelaufen nach 10472 ms". –