bmw*_*128 51 angularjs protractor
我想在量角器测试中输出div的文本,到目前为止我有:
console.log(ptor.findElement(protractor.By.id('view-container')).getText());
Run Code Online (Sandbox Code Playgroud)
但是这个输出
[object Object]
Run Code Online (Sandbox Code Playgroud)
我尝试了"toString()"和相同的结果.
有没有办法将文本输出到控制台?
Jmr*_*Jmr 107
getText
而且大多数其他的Protractor方法都会返回承诺.您希望将您的console.log
陈述置于承诺解决方案中:
使用新的Protractor语法:
element(by.id('view-container')).getText().then(function(text) {
console.log(text);
});
Run Code Online (Sandbox Code Playgroud)
Zac*_*ick 33
这是相当古老的,但作为量角器的前n00b,我希望有更多的文档.
你也可以用:
element(by.id('view-container')).getText().then(console.log);
Run Code Online (Sandbox Code Playgroud)
或者我喜欢做的可读性是将页面上的所有对象放在他们自己的函数,部分或文件中:
//top declaration of variables
var viewContainer = element(by.id('view-container')).getText();
.... //bunch of code
....
viewContainer.then(console.log);
Run Code Online (Sandbox Code Playgroud)
这将满足您的大部分花园调试需求.
对于一般的承诺,您可以尝试使用 protractor.promise.all()
让我们说你有两件事都是承诺:
var getTime = element(by.xpath(theTimeXpath)).getText();
var getPageTitle = element(by.xpath(thePageTitle)).getInnerHtml();
protractor.promise.all([getTime, getPageTitle]).then(function(theResultArray){
var timeText = result[0];
var pageTitleInnerHtml = result[1];
console.log(timeText); // outputs the actual text
console.log(pageTitleInnerHtml); //outputs the text of the Inner html
});
Run Code Online (Sandbox Code Playgroud)
当事情开始变得更复杂时,第二种方法很有用.但就个人而言,我发现了其他方法.虽然它并不坏,但对于其他需要阅读我的代码的开发人员来说,它有点时髦.
我想建议对其他答案做一点改进.
简短的回答:我喜欢用browser.sleep(0).then(..);
我需要的东西推动量子器的流程.
它是通用的,易于移动.
TL;博士
所以使用上面的内容,你可以轻松地在浏览器(或ptor)上添加一个功能:
browser.log = function( logger, level, msg ){
browser.sleep(0).then(function(){ logger[level](msg); });
}
Run Code Online (Sandbox Code Playgroud)
或者更复杂的东西apply
- 但这取决于你的记录器.
你可以明显增强一点像记录器像api
var logger = browser.getLogger('name');
Run Code Online (Sandbox Code Playgroud)
应该实现像(假设log4js)
browser.getLogger = function( name ){
var logger = require('log4js').getLogger(name);
function logMe( level ) {
return function(msg ){
browser.sleep(0).then(function(){ logger[level](msg); });
}
}
return { info : logMe('info'), ... }
}
Run Code Online (Sandbox Code Playgroud)
基本上,天空是极限.
我确信有一种方法可以使我的代码更短,关键是使用该sleep
方法作为基础.
归档时间: |
|
查看次数: |
65108 次 |
最近记录: |