Ich versuche, den folgenden Code auszuführen executeAsyncScript
mit:executeAsyncScript Ablaufen
function get(url) {
var callback = function(args) {
console.log(args);
};
var defer = protractor.promise.defer();
browser.executeAsyncScript(function (url, callback) {
console.log("url" + url);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
console.log(xhr.responseText);
callback(xhr.responseText);
defer.fulfill(xhr);
}
}
xhr.open('GET', url , true);
xhr.send();
}, url);
return defer.promise;
};
function setupCommon() {
return get('https://example.com/rest/api/getsomething');
}
var flow = protractor.promise.controlFlow();
flow.execute(setupCommon);
Wenn ich den Code ausführen, die dann direkt im Browser-Konsole executeAsyncScript geben wird es funktioniert. Ich bekomme die erwartete Ausgabe.
console.log("url" + url);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
console.log(xhr.responseText);
callback(xhr.responseText);
defer.fulfill(xhr);
}
}
xhr.open('GET', 'https://example.com/rest/api/getsomething', true);
xhr.send();
Aber wenn ich es executeAsyncScript mit ausführen, es mal heraus zu sagen:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
Die restapi sollte nicht viel Zeit genommen haben. Ich bin neu in all dem. Ich bin mir nicht sicher, was ich falsch mache. Kann mir bitte jemand dabei helfen?