Javascript 获得网页标题的承诺永远无法用量角器和茉莉花解决
下面的量角器/jasmine测试代码只打印出1和2,然后挂起并超时 这似乎是button元素上的click()操作或浏览器对象上的getTitle方法上的承诺有问题,或者两者都有问题 有没有人能解决这个问题,或者有更好的方法来做我正在做的事情 代码:Javascript 获得网页标题的承诺永远无法用量角器和茉莉花解决,javascript,angularjs,selenium-webdriver,jasmine,protractor,Javascript,Angularjs,Selenium Webdriver,Jasmine,Protractor,下面的量角器/jasmine测试代码只打印出1和2,然后挂起并超时 这似乎是button元素上的click()操作或浏览器对象上的getTitle方法上的承诺有问题,或者两者都有问题 有没有人能解决这个问题,或者有更好的方法来做我正在做的事情 代码: it('should allow successful login', function() { browser.get('http://192.168.0.100/src/'); browser.waitForAngular
it('should allow successful login', function() {
browser.get('http://192.168.0.100/src/');
browser.waitForAngular();
var titlePromise = browser.getTitle();
titlePromise.then(function(text){
console.log("1**************", text);
});
var titlePromise = browser.getTitle();
titlePromise.then(function(text){
console.log("2**************", text);
});
element.all(by.model('credentials.username')).first().sendKeys('foo');
element.all(by.model('credentials.password')).first().sendKeys('bar');
var loginBtn = element.all(by.cssContainingText('.btn', 'Login')).first();
loginBtn.click();
browser.sleep(5000);
var titlePromise = browser.getTitle();
titlePromise.then(function(text){
console.log("3**************", text);
});
});
});
错误:
it('should allow successful login', function() {
browser.get('http://192.168.0.100/src/');
browser.waitForAngular();
var titlePromise = browser.getTitle();
titlePromise.then(function(text){
console.log("1**************", text);
});
var titlePromise = browser.getTitle();
titlePromise.then(function(text){
console.log("2**************", text);
});
element.all(by.model('credentials.username')).first().sendKeys('foo');
element.all(by.model('credentials.password')).first().sendKeys('bar');
var loginBtn = element.all(by.cssContainingText('.btn', 'Login')).first();
loginBtn.click();
browser.sleep(5000);
var titlePromise = browser.getTitle();
titlePromise.then(function(text){
console.log("3**************", text);
});
});
});
错误:等待量角器与页面同步时超时
11秒后。请看
我可能没有足够的信息,但这里有一些东西可以尝试:
browser.driver.wait(函数(){
返回browser.driver.getCurrentUrl().then(函数(url){
返回/登录url/.test(url);
});
});代码>
您忘记了与文档的所有交互都是通过。您的代码应该与下面未测试的代码块类似 还要注意的是,
browser.waitForAngular
是“量角器在每次WebDriver操作之前自动应用此命令。”
我不知道你为什么这么频繁地调用getTitle
,但是我把它放在了里面,以防它让重构更清晰
it('should allow successful login', function() {
browser.get('http://192.168.0.100/src/')
.then(function(){
return browser.getTitle()
})
.then(function(text){
console.log("1**************", text);
return browser.getTitle();
})
.then(function(text) {
console.log("2**************", text);
return browser.getTitle()
})
.then(function (text) {
console.log("3**************", text);
element.all(by.model('credentials.username')).first().sendKeys('foo');
})
.then(function () {
element.all(by.model('credentials.password')).first().sendKeys('bar');
})
.then(function () {
element.all(by.cssContainingText('.btn', 'Login')).first().click();
})
.then(function () {
browser.sleep(5000); // Better to use ExpectedConditions to wait something
})
.then(function () {
var titlePromise = browser.getTitle();
return browser.getTitle()
})
.then(function (text) {
console.log("3**************", text);
});
});
闻起来像你提到的问题1,因为我的应用程序中使用了$timeout、polling和$interval。但是,在运行这个测试的过程中,没有一个在使用,这让我很困惑。正在正确选择登录名。当chrome量角器启动时,我看着它工作。尝试了第三个,结果没有变化。这开始让我恼火了。5天的selenium实验,我还没有找到任何好的方法来测试我的应用程序。element是量角器特定的对象。前两项测试之所以有效,是因为它们是硒,而不是量角器。我猜量角器无法加载。我强烈建议大家通读那个文档。我放弃了这个想法,决定自己使用SeleniumWebDriver。我终于让它工作了,没有跳过任何东西或挂在任何地方。老实说,很多硒元素看起来像是西部的超级野性,令人失望,也令人沮丧。angular如何支持一个不适用于所有angular应用程序的测试框架!?很多人说登录页面使用selenium,登录后使用特定的量角器。是的,这是荒野的西部。当你在公司时间做实验时,情况还不错;)。