以字符串形式读取量角器测试中的更新输入

Reading an updated input in a protractor test as a string

本文关键字:更新 输入 测试 量角器 字符串 读取      更新时间:2023-09-26

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

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

<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);

每次我得到这样的东西:

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

我确信我需要的数据在这里,我只是对量角器太陌生了,无法计算出来。然而,这是毒品技术。非常感谢。

编辑:

我现在也尝试过:

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'这样的字符串似乎仍然是不可能的。这是我需要交给另一个函数的。

我知道这一定是可能的,但这让我抓狂。我将继续阅读这些文档。

getAttribute()与许多其他量角器方法返回promise一样,您需要解析它:

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

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

  • 承诺与控制流程
  • 预言家:承诺是如何运作的
  • 使用Protractor的ControlFlow进行异步测试
  • Julie Ralph使用量角器进行端到端角度测试(通常是量角器的伟大介绍)

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

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