【问题标题】:Cannot return string from value of element in protractor test无法从量角器测试中的元素值返回字符串
【发布时间】:2015-06-06 10:15:32
【问题描述】:

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

这是元素:

<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,而我似乎无能为力解决这个问题。我确定我做错了什么,因为我是量角器的新手,这看起来很简单。有其他人遇到过这种行为吗?

【问题讨论】:

  • 只是一个健全性检查 - 页面上只有一个带有 id="group-sendgrid-hidden-input" 的元素?
  • 是的,只有一个。刚刚搜索了一下。
  • 会不会和 div 被隐藏有关?只是另一个健全性检查,因为它显然会返回“元素不可见”错误。

标签: javascript angularjs protractor


【解决方案1】:

对于评论来说太大了,仍然是一个猜测,但是如何制作一个 custom "Expected Condition"等待 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);
});

【讨论】:

  • 好的,这太棒了。这行得通。在我的另一个问题中,我将更新答案就在这里。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多