无法从量角器测试中元素的值返回字符串

Cannot return string from value of element in protractor test

本文关键字:返回 字符串 元素 量角器 测试      更新时间:2023-09-26

所以我试图从这个promise的解析中的一个元素的值中获得一个字符串值。我想将一个原始字符串值传递给我正在量角器测试中构建的另一个函数。

这就是要素:

<div style='hidden' >
    <input id="group-sendgrid-hidden-input" ng-model='groupCode' value='dangyo' >
</div>

我正在寻找一种方法来获取模型值或属性值(两者都可以)。模型价值甚至可能更好。

这是我试图解决这里的一个承诺并返回一个结果:

// first get the element driver object
var groupCode = element(by.id('group-sendgrid-hidden-input'));
// next resolve a promise provided by this element
groupCode.getAttribute('value').then(function(value){
    console.log( 'should be a string: ' + value);
    return value;
});

这里,console.log( 'should be a string: ' + value);总是为value返回null,而我似乎无法解决这个问题。我确信我做错了什么,因为我是量角器的新手,这看起来很简单。有其他人经历过这种行为吗?

对于注释来说,它太大了,仍然是一个猜测,但制作一个自定义的"预期条件"并等待input元素的value属性值不是null:怎么样

var hasNotNullValue = function(elementFinder) {
    return function() {
        return elementFinder.getAttribute("value").then(function(value) {
            return !!value;  // is not null
        });
    }; 
};
var groupCode = element(by.id('group-sendgrid-hidden-input'));
browser.wait(hasNotNullValue(groupCode), 10000);
groupCode.getAttribute('value').then(function(value){
    console.log('should be a string: ' + value);
});

您也可以使用evaluate()来检索模型值:

groupCode.evaluate('groupCode').then(function(value) {
    console.log(value);
});