Ich habe eine Seite, die einen Iframe lädt, innerhalb des iframe ein Spinner dreht (Overlay über die Felder)Selen warten js für iframe voll
ich Selen in die iframe zu wechseln verwende,
return this.driver.wait(function() {
return self.webdriver.until.ableToSwitchToFrame(self.driver.findElement(self.page.loginIframe.selector))
}, this.config.driver.defaultTimeout);
dann this.driver.switchTo().frame(0);
, sobald die oben kehrt Aufruf wahren
aber ich warten müssen, bis die Spinner gegangen sind, und dass die Eingabefelder für die Eingabe bereit sind.
Wenn ich eine driver.sleep
benutze, kann ich die Daten richtig eingeben, aber wenn ich versuche, .elemenIsVisible, versucht es sofort, Daten einzugeben und schlägt fehl.
Code ein Login, um zu versuchen:
var self = this;
this.waitForPageLoad().then(function pageLoaded() {
console.log("page loaded");
self.switchToIframe().then(function switchedToIframe() {
console.log("switched to iframe");
// THIS FIXES the issue, but I do not want a random sleep self.driver.sleep(10000);
self.waitForIframeLoad().then(function iframeLoaded() {
console.log("iframe loaded!");
self.setUserName(self.config.user.userName);//FAILS HERE
});
});
});
Code, den Fehler auslöst:
Login.prototype.waitForIframeLoad = function() {
var self = this;
//console.log(self.webdriver.until);
return this.driver.wait(function() {
return self.webdriver.until.elementIsVisible(self.driver.findElement(self.page.usernameInputField.selector))
}, this.config.driver.defaultTimeout);
};
Fehlermeldung: NoSuchElementError: no such element