Protractor: Fehler: Zeitüberschreitung – Asynchroner Rückruf wurde nicht innerhalb der durch jasmine.DEFAULT_TIMEOUT_INTERVAL angegebenen Zeitüberschreitung aufgerufen

Erstellt am 19. Feb. 2016  ·  26Kommentare  ·  Quelle: angular/protractor

Ich verwende das Beispiel von " http://www.protractortest.org/#/tutorial "

// spec.js
describe('Protractor Demo App', function() {
  it('should have a title', function() {
    browser.get('http://juliemr.github.io/protractor-demo/');

    expect(browser.getTitle()).toEqual('Super Calculator');
  });
});

// conf.js
exports.config = {
  framework: 'jasmine',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js']
}

Führen Sie nun den Test mit durch

protractor conf.js

Dann die Konsolenanzeige:
image

needs more info

Hilfreichster Kommentar

@sallojusuresh , die folgende Lösung hat funktioniert.
jasmineNodeOpts: {
defaultTimeoutInterval: 2500000
},
Frage – Wenn wir wie oben eine Standardzeit festlegen können, woher kommt die Verwendung der setTimeout-Funktion in „beforeEach“ und durchgeführte Rückrufe in „it“. Irgendeine Idee?

Alle 26 Kommentare

Sie finden die Lösung im folgenden Beitrag: Gehen Sie einfach den gesamten Beitrag durch.

https://github.com/angular/protractor/issues/2941#issuecomment -186104304

Können Sie Selen erfolgreich starten? Was passiert, wenn Sie directConnect verwenden?

Schließen veralteter Probleme.

Ich habe das gleiche Problem und der andere Beitrag funktioniert bei mir nicht.
@juliemr eine Lösung dafür? Ich habe allScriptsTimeout: 900000 ausprobiert, aber das löst das Problem nicht.

Funktioniert bei mir auch nicht. Erhöhen Sie defaultTimeoutInterval löst es nicht

@juliemr Ich habe das gleiche Problem und das Erhöhen von ScriptsTimeout funktioniert bei mir nicht. Haben Sie eine Lösung dafür? Danke schön.

Hallo zusammen,

Ich führe einen Testfall im Winkelmesser aus, der einen Zeitüberschreitungsfehler erhält. Hier sind die Einzelheiten. Bitte beraten. Danke schön

Fehler: Zeitüberschreitung – Asynchroner Rückruf wurde nicht innerhalb der durch jasmine.DEFAULT_TIMEOUT_INTERVAL angegebenen Zeitüberschreitung aufgerufen.

sample_spec.js

description('Mcac-App-Tests', function() {
browser.get('http://localhost:3000/integrated/myWeb.html');
beforeEach(Funktion (fertig) {
window.jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
setTimeout(Funktion () {
console.log ('Inside-Timeout');
fertig();
}, 50000);
});
//browser.get('http://localhost:3000/integrated/myWeb.html');
// browser.get('http://localhost:3000/integrated/myWeb.html').then(function() {
it('Validierung der E-Mail-Adresse', function()
{

        element(by.model('ctrl.formData.emailAddress')).sendKeys('').clear();
        element(by.model('ctrl.formData.emailAddress')).sendKeys('[email protected]');
        element(by.model('ctrl.formData.emailAddress')).getAttribute('value').then(function (value) {
            expect(value).toEqual('[email protected]');
        });


}, 10000);

// element(by.xpath("//button[text()='Confirm']")).click();
browser.sleep(5000);

});

config.js

// Eine Beispielkonfigurationsdatei.
exports.config = {
directConnect: wahr,

// An die Webdriver-Instanz zu übergebende Fähigkeiten.
Fähigkeiten: {
'browserName': 'chrome'
},

// Zu verwendendes Framework. Jasmin wird empfohlen.
Rahmen: 'Jasmin',

// Spezifikationsmuster sind relativ zum aktuellen Arbeitsverzeichnis when
// Winkelmesser wird aufgerufen.
// Spezifikationen: ['example_spec.js'],
//Spezifikationen: ['mcac_spec.js'],
//Spezifikationen: ['mcac_spec_mobile.js'],
Spezifikationen: ['mcac_online.js'],
// An Jasmine zu übergebende Optionen.
jasmineNodeOpts: {
defaultTimeoutInterval: 5000
}

};

jede Hilfe sehr geschätzt.

Ich hatte dieses Problem und es lag an einem sich wiederholenden $timeout ( $timeout blockiert den Winkelmesser, während $interval dies nicht tut).

Um das sich wiederholende $timeout zu finden, können Sie den Element-Explorer von Protractor verwenden, zum Beispiel:

$ protractor config/protractor.js --elementExplorer
Starting debugger agent.
Debugger listening on port 5858
> var body = element(by.css('body'))
> body.isPresent()
ScriptTimeoutError: Timed out waiting for asynchronous Angular tasks to finish after 15 seconds. This may be because the current page is not an Angular application. Please see the FAQ for more details: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular
While waiting for element with locator - Locator: By(css selector, body). 
The following tasks were pending:
 - $timeout: function () {
        // ......
    }

Danke schön.

Ich habe das Problem gefunden. Das Laden der URL erfordert Zeit und Suche
ng-app-Tag in der HTML-Seite.

mit freundlichen Grüßen,
Narendra

Narendra...!

Am 15. Dezember 2016 um 06:12 schrieb Amy Boyd [email protected] :

Ich hatte dieses Problem und es lag an einem sich wiederholenden $timeout ($timeout
blockiert Protractor, während $interval dies nicht tut).

Um das sich wiederholende $timeout zu finden, können Sie den Element-Explorer von Protractor verwenden,
zum Beispiel:

$ Winkelmesser config/protractor.js --elementExplorer
Debugger-Agent wird gestartet.
Debugger überwacht Port 5858

var body = element(by.css('body'))
body.isPresent()
ScriptTimeoutError: Zeitüberschreitung beim Warten auf die Beendigung asynchroner Angular-Aufgaben nach 15 Sekunden. Dies kann daran liegen, dass die aktuelle Seite keine Angular-Anwendung ist. Weitere Einzelheiten finden Sie in den häufig gestellten Fragen: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting -for-angular
Beim Warten auf Element mit Locator - Locator: By(css selector, body).
Folgende Aufgaben standen an:

  • $timeout: Funktion () {
    // ......
    }


Sie erhalten dies, weil Sie kommentiert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/angular/protractor/issues/2963#issuecomment-267302567 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AViSFkiN29oWnH6AJ0P_wNY_LNzE2fglks5rISCYgaJpZM4Hd20v
.

Hallo zusammen,

Ich führe einen Testfall im Winkelmesser aus, der einen Zeitüberschreitungsfehler erhält. Hier sind die Einzelheiten. Bitte beraten. Danke schön

Fehlgeschlagen: Zeitüberschreitung beim Warten auf die Beendigung asynchroner Angular-Aufgaben nach 30 Sekunden. Dies kann daran liegen, dass die aktuelle Seite keine Angular-Anwendung ist.

@sallojusuresh , die folgende Lösung hat funktioniert.
jasmineNodeOpts: {
defaultTimeoutInterval: 2500000
},
Frage – Wenn wir wie oben eine Standardzeit festlegen können, woher kommt die Verwendung der setTimeout-Funktion in „beforeEach“ und durchgeführte Rückrufe in „it“. Irgendeine Idee?

Ich habe es auf folgende Weise behoben

 var originalTimeout;

    beforeEach(function() {
        originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
        jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
    });

    afterEach(function() {
      jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
    });

Danke schön.

Narendra...!

Am 11. März 2018 um 23:53 Uhr Md. Zahirul Haque [email protected]
schrieb:

Ich habe es auf folgende Weise behoben

` var originalTimeout;

beforeEach(function() {
originalTimeout = Jasmin.DEFAULT_TIMEOUT_INTERVAL;
Jasmin.DEFAULT_TIMEOUT_INTERVAL = 10000;
});

afterEach(funktion() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
});`


Sie erhalten dies, weil Sie kommentiert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/angular/protractor/issues/2963#issuecomment-372187210 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AViSFg7ITAW3XW5zky_-QXXmAudt11qDks5tdfE1gaJpZM4Hd20v
.

@NickTomlin Du hast gerade meinen Tag versüßt :) Ich habe directconnect verwendet und gearbeitet. Es wäre großartig, wenn Sie etwas Licht ins Dunkel bringen würden, was DirectConnect tatsächlich tut

In meinem Fall wurde dieser Fehler durch unsachgemäße Verwendung von "fixture.detectChanges()" verursacht. Es scheint, dass diese Methode ein Ereignis-Listener (async) ist, der nur auf einen Rückruf antwortet, wenn Änderungen erkannt werden. Wenn keine Änderungen erkannt werden, wird der Rückruf nicht aufgerufen, was zu einem Zeitüberschreitungsfehler führt. Hoffe das hilft :)

@juliemr Timeout – Async-Callback wurde nicht innerhalb des von jasmine.DEFAULT_TIMEOUT_INTERVAL angegebenen Timeouts aufgerufen. Dieser Fehler kommt in meinem Test wieder und wieder habe ich vor jedem, nach jedem, browser.sleep, den Jasmin-Timeout-Iterval auf 100000 erhöht. Aber mein Code wird nicht ausgeführt, also schlagen Sie mir bitte vor, was ich tun könnte.

Ich habe dieses Problem und kann es nicht lösen, während ich das Jasmin-Timeout auf 300000 erhöht habe. Bitte schlagen Sie mir vor, was ich dafür tun soll.

Können Sie ein einfaches Beispiel geben?

Die Lösung hierfür ist, wenn Sie versuchen, Tests für nicht-eckige Apps zu schreiben, gehen Sie zu runner.js unter node_modules/protractor/built
Bearbeiten Sie Zeile 210 in waitForAngularEnabled: false //true

@juliemr ein Vorschlag, diese Einstellung konfigurierbar zu machen.

Sie könnten dies im Abschnitt onPrepare() tun:

onPrepare: async () => {
    await browser.waitForAngularEnabled(false);
    ....
}

Ich habe das gleiche Problem, aber die hier bereitgestellten Lösungen haben bei mir nicht funktioniert. Wenn Sie Zeit haben, schauen Sie sich bitte meine Frage zu Stack Overflow an. Das Problem lässt sich leicht reproduzieren und ich habe ein Repo. Ich schätze, dass es ein Bug sein kann.
https://stackoverflow.com/questions/53786401/error-debugging-protractor-with-node-8-async-await-and-angular-6

Erwartet, dass falsch gleich wahr ist, weil: Fehlerprotokolle in Konsole vorhanden:Eintrag {
level: level { name_: 'SEVERE', value_: 1000 },
Botschaft:
"ERROR" Fehler: formGroup erwartet eine FormGroup-Instanz. Bitte reichen Sie einen ein.\n\n Beispiel:\n\n \n

\n \n
\n\n In Ihrer Klasse:\n\n this.myGroup = new FormGroup({\n firstName: new FormControl()\n });\n bei Function.e.missingFormException

Problem beim Klicken auf die Popup-Schaltfläche, gibt es eine Lösung?

Ich habe ein ähnliches Problem mit Post und ich habe mein Problem gelöst, indem ich HttpClientModule bei Importen hinzufüge:

beforeEach(() => {

TestBed.configureTestingModule({

    declarations: [],

    providers: [ CookieService, HttpClient],  

    imports: [HttpClientModule],
});

});

Ich habe ein ähnliches Problem mit Post und ich habe mein Problem gelöst, indem ich HttpClientModule bei Importen hinzufüge:

beforeEach(() => {

TestBed.configureTestingModule({

    declarations: [],

    providers: [ CookieService, HttpClient],  

    imports: [HttpClientModule],
});

});

Ich persönlich hatte Probleme beim Importieren des HttpClientModule in ein Testbed. Es versucht, Ihre APIs in Ihren Komponententests auszuführen, was dazu führt, dass sie fehlschlagen. Der richtige Ansatz wäre die Verwendung von HttpClientTestingModule

@sallojusuresh , die folgende Lösung hat funktioniert.
jasmineNodeOpts: {
defaultTimeoutInterval: 2500000
},
Frage – Wenn wir wie oben eine Standardzeit festlegen können, woher kommt die Verwendung der setTimeout-Funktion in „beforeEach“ und durchgeführte Rückrufe in „it“. Irgendeine Idee?

Dies ist die beste Lösung. Fügen Sie einfach dieses Stück Code in Ihre Confing-Datei ein, es sollte Ihr Problem lösen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen