Javascript selenium js等待iframe完全加载
我有一个加载iframe的页面,在iframe内部有一个微调器旋转(覆盖在字段上) 我正在使用selenium切换到iframeJavascript selenium js等待iframe完全加载,javascript,selenium,Javascript,Selenium,我有一个加载iframe的页面,在iframe内部有一个微调器旋转(覆盖在字段上) 我正在使用selenium切换到iframe return this.driver.wait(function() { return self.webdriver.until.ableToSwitchToFrame(self.driver.findElement(self.page.loginIframe.selector)) }, this.config.driver.defaultTimeou
return this.driver.wait(function() {
return self.webdriver.until.ableToSwitchToFrame(self.driver.findElement(self.page.loginIframe.selector))
}, this.config.driver.defaultTimeout);
然后调用this.driver.switchTo().frame(0)代码>一旦上述返回true
但是,我需要等到微调器消失,输入字段准备好输入
如果我使用驱动程序.sleep
我能够正确输入数据,但是当我尝试.element可见时,它会立即尝试输入数据,但失败了
尝试登录的代码:
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
});
});
});
引发错误的代码:
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);
};
错误消息:NoSuchElementError:no这样的元素
我首先通过了检查,如果它存在,iframe的dom没有立即加载,这导致了错误
Login.prototype.waitForIframeLoad=function(){
var self=这个;
log(self.webdriver.until);
var deferred=this.webdriver.promise.deferred();
this.driver.wait(函数(){
//等待元素出现
返回self.driver.isElementPresent(self.page.usernameInputField.selector);
}).然后(函数(){
//然后检查它是否可见
返回self.driver.wait(self.webdriver.until.element可见(self.driver.findElement(self.page.usernameInputField.selector));
}).然后(延迟。完成);
回报。承诺;
};代码>