[英]Protractor promise resolution with getText()
我这样调用getText()函数,然后尝试解析Promise,但以后无法获取字符串值。
var textFromElement = someElement.getText().then(function(text){return text})
var splittedText = textFromElement.split(" ")
如何获取文本以备后用?
您不了解的是javascript编译器如何处理promise。
这就是编译器查看代码的方式。
var textFromElement = someElement.getText().then(function(text){return text})
var splittedText = textFromElement.split(" ")
1-所有变量都在函数作用域的顶部创建,无论您在何处分配变量。
var textFromElement; (= undefined)
var splittedText; (= undefined)
2-对每一行进行最少的工作,然后移至下一行。
testFromElement = {promise element object};
splittedText = {promise element object}.split(" "); (= undefined)//This what you don't want.
3-从顶部开始,在未解析的行上执行最少的工作。
testFromElement = {promise getText object};
4-从顶部开始,在未解决的行上执行最少的工作。
testFromElement = "text text";
简而言之,它在您需要之前将splittedText分配了三步。
好例子:
var splittedText;
it("should get split text", function(done) {
someElement.getText().then(function(textFromElement){
splittedText = textFromElement.split(" ");
done();
})
})
1-所有变量都在函数作用域的顶部创建,无论您在何处分配变量。
var splittedText; (= undefined)
2-仅在此函数内完成工作,直到调用done()
it("should get split text", function(done) {
3-对每一行进行最少的工作,然后移至下一行。
someElement = {promise element object};
4-从函数的顶部开始,在未解析的行上执行的工作量最少。
someElement.getText() = {promise getText object};
5-从函数的顶部开始,在未解析的行上执行的工作量最少。
textFromElement = "text text";
splittedText = textFromElement.split(" "); (["text","text"]);
done(); //the compiler can now to work outside this function
您的问题是,您正在为变量分配.then()方法的分辨率,而不是为其提供参数的回调。
总而言之,量角器/茉莉都带有异步测试机制。
在这里,您获得了ES6示例。
it('some description', (done) => {
someElement.getText().then(text => {
var splittedText = text.split(" ");
done();
});
});
和ES5:
it('some description', function(done) => {
someElement.getText().then(function(text){
var splittedText = text.split(" ");
}).finally(done);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.