【问题标题】:Reading an updated input in a protractor test as a string将量角器测试中的更新输入作为字符串读取
【发布时间】:2015-04-02 11:40:46
【问题描述】:

我正在尝试读取量角器操作的输入。我正在尝试从量角器中发送 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 控制台中看到该值更新为我除外。这意味着$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' 这样的字符串。这是我需要交给另一个函数的。

我知道这一定是可能的,但这让我发疯了。我会继续阅读文档。

【问题讨论】:

    标签: javascript ajax json angularjs protractor


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的,谢谢。我查看了这些文档。我不明白为什么 console.log(value); 返回 null (或可能未定义)。我会继续阅读。有没有我遗漏的函数调用?
    • @usumoio 这里的关键技巧是使用then() 函数在解决后获取实际的承诺值。希望这是有道理的。
    【解决方案2】:

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

    Cannot return string from value of element in protractor test

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 2018-07-21
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多