在量角器测试中读取更新的输入作为字符串

时间:2015-03-31 01:58:44

标签: javascript ajax json angularjs protractor

我正在尝试读取量角器中的操作输入。我正试图从量角器中发送一个ajax请求。我需要将一个唯一值(我正在调用groupCode)发送到我想要发送到服务器的JSON对象的一部分。

所以首先我尝试设置一个可以更新的隐藏输入。我试过了:

<div style='hidden' >
    <input 
        id="group-sendgrid-hidden-input" 
        ng-model='groupCode' 
        value='{{groupCode}}' 
        ng-init='groupCode=dangdangdang'
    >
</div>

此尝试读取模型值:

<div style='hidden' >
    <input 
        id="group-sendgrid-hidden-input" 
        ng-model='groupCode' 
        value='{{groupCode}}' 
        ng-init='groupCode=dangdangdang'
    >
   {{groupCode}}
</div>

现在,我可以在Angular控制台中看到此值更新为I除外。意味着$scope.groupCode确实解决了'当当当'。所以我不认为这是问题所在。从这里开始,我希望在量角器测试中读取groupCode字符串,如下所示:

以下是我尝试过的一些内容:

var groupCodeModel      = element(by.model('groupCode'));
var groupCodeBinding    = element(by.binding('groupCode'));
var placeholder         = groupCodeBinding.getText();

也试图以更直接的方式获得价值(我认为)

var groupCode = element(
    by.id('group-sendgrid-hidden-input')
).getAttribute('value');


// and then later I want to do this:
var sendgridData = {envelope: 'what', test: groupCode};

问题在于,无论我尝试什么,groupCode数据的值似乎永远不会解析为字符串。

  1. 我无法console.log(groupCode);
  2. 此操作失败:var sendgridDataString = JSON.stringify(sendgridData);
  3. 每次我得到这样的东西:

    { ptor_: 
        { controlFlow: [Function],
          schedule: [Function],
          getSession: [Function],
          getCapabilities: [Function],
          quit: [Function],
          actions: [Function],....
    

    而且我确信我需要的数据就在这里,我对于量角器来说太新了。然而,它是dope技术。谢谢。

    编辑:

    我现在也尝试过:

    var groupCode = element(by.id('group-sendgrid-hidden-input')).evaluate('groupCode').then(function(groupCode){
    
            console.log('test: ' + groupCode);
            return value;
    });
    

    以及:

    var groupCode = element(by.id('group-sendgrid-hidden-input')).getAttribute('value').then(function(groupCode){
    
            console.log('test: ' + value);
    
        return value;
    });
    

    在第二个中,groupCode返回:

    { then: [Function: then],
        cancel: [Function: cancel],
        isPending: [Function: isPending] }
    

    似乎不可能只获得像groupCode = 'just some words'这样的字符串。这是我需要交给另一个函数的。

    我知道这一定是可能的,但它让我变得疯狂。我将继续阅读文档。

2 个答案:

答案 0 :(得分:2)

getAttribute()许多其他量角器方法返回一个承诺,你需要解析它:

element(by.id('group-sendgrid-hidden-input')).getAttribute('value').then(function (value) {
    console.log(value);
});

以下是有助于理解承诺概念的相关页面:

答案 1 :(得分:0)

我们进一步讨论这个问题并回答原来的问题,我在这里提出的另一个问题是关于实现这里列出的解决方案,这个问题几乎已经完成,并且完成了我必须在it测试中编写的期望条件

Cannot return string from value of element in protractor test