Selenium webdriver 如何在量角器中终止(停止/清除)browser.driver.wait()?
在量角器中使用Selenium webdriver 如何在量角器中终止(停止/清除)browser.driver.wait()?,selenium-webdriver,protractor,Selenium Webdriver,Protractor,在量角器中使用wait()时出现问题。 这是我的代码: var timeOut = function(callback) { browser.driver.wait(function() { callback(); }, 5000); }; this.Then(/^input userName "([^"]*)", password "([^"]*)" and click login$/, function (userName,
wait()
时出现问题。这是我的代码:
var timeOut = function(callback) {
browser.driver.wait(function() {
callback();
}, 5000);
};
this.Then(/^input userName "([^"]*)", password "([^"]*)" and click login$/, function (userName, password, next) {
login();
function login() {
var userNameElm = by.css('[id="userName"]');
browser.driver.isElementPresent(userNameElm).then(function(exist) {
if (exist) {
browser.driver.findElement(userNameElm).sendKeys("oh my gold!");
browser.driver.findElement(by.css('[id="pass"]')).sendKeys("pass test");
browser.driver.findElement(by.id('login')).click().then(function(){
return next();
});
} else {
timeOut(login);
}
});
}
});
我收到一条错误消息:失败:等待在之后超时。出现此问题是因为它将调用timeOut(登录)代码>永远。
如何终止wait()函数。谢谢。在这种情况下,您只需使用浏览器.driver.sleep
,而不必使用设置超时
或浏览器.driver.wait
:
login();
function login() {
var userNameElm = by.css('[id="userName"]');
return browser.driver.isElementPresent(userNameElm).then(function(exist) {
if (exist) {
browser.driver.findElement(userNameElm).sendKeys("oh my gold!");
browser.driver.findElement(by.css('[id="pass"]')).sendKeys("pass test");
return browser.driver.findElement(by.id('login')).click();
} else {
return browser.driver.sleep(5000).then(function() {
return login();
});
}
});
}
您应该了解量角器异步性(这是一个有效的词吗?)以及由此产生的承诺链,以反映类似同步的行为,因此假设您可以控制步骤顺序和有效结果
建议:
this.Then(/^input userName "([^"]*)", password "([^"]*)" and click login$/, function (userName, password) {
return browser.driver.isElementPresent(by.css('[id="userName"]'))
.then(function(element) {
if (element != null) {
return browser.driver.findElement(userNameElm)
.sendKeys("oh my gold!");
} else {
//fail- element not found
return false;
}
})
.then(function(){
return browser.driver.findElement(by.css('[id="pass"]'))
.sendKeys("pass test");
})
.then(function(){
return browser.driver.findElement(by.id('login'))
.click();
})
});
}
});
如果您没有到达量角器配置中allScriptsTimeout给出的承诺链的末尾,整个块将超时。请参阅了解超时:)谢谢:),我将了解