将量角器测试中的更新输入作为字符串读取
Reading an updated input in a protractor test as a string
我正在尝试读取量角器操作的输入。我正在尝试从量角器中发送 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
确实解析为 'dangdangdang'。所以我不认为这是问题所在。从这里开始,我希望在量角器测试中读取 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 数据的值似乎都无法解析为字符串。
- 我无法
console.log(groupCode);
- 这失败了:
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 returns:
{ then: [Function: then],
cancel: [Function: cancel],
isPending: [Function: isPending] }
似乎仍然不可能只得到像 groupCode = 'just some words'
这样的字符串。这是我需要交给另一个函数的。
我知道这一定是可能的,但这让我发疯。我会继续阅读文档。
getAttribute()
与许多其他量角器方法一样 returns 承诺,您需要 解决 它:
element(by.id('group-sendgrid-hidden-input')).getAttribute('value').then(function (value) {
console.log(value);
});
以下是有助于理解承诺概念的相关页面:
- Promises and the Control Flow
- Protractor: How do promises work?
- Asynchronous Testing with Protractor’s ControlFlow
- Julie Ralph End to End Angular Testing with Protractor(量角器的一般介绍很好)
我们进一步讨论这个问题,并在我询问的关于实施此处列出的解决方案的另一个问题中回答原始问题,该问题几乎完成并完成了我必须在 it
测试。
我正在尝试读取量角器操作的输入。我正在尝试从量角器中发送 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
确实解析为 'dangdangdang'。所以我不认为这是问题所在。从这里开始,我希望在量角器测试中读取 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 数据的值似乎都无法解析为字符串。
- 我无法
console.log(groupCode);
- 这失败了:
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 returns:
{ then: [Function: then],
cancel: [Function: cancel],
isPending: [Function: isPending] }
似乎仍然不可能只得到像 groupCode = 'just some words'
这样的字符串。这是我需要交给另一个函数的。
我知道这一定是可能的,但这让我发疯。我会继续阅读文档。
getAttribute()
与许多其他量角器方法一样 returns 承诺,您需要 解决 它:
element(by.id('group-sendgrid-hidden-input')).getAttribute('value').then(function (value) {
console.log(value);
});
以下是有助于理解承诺概念的相关页面:
- Promises and the Control Flow
- Protractor: How do promises work?
- Asynchronous Testing with Protractor’s ControlFlow
- Julie Ralph End to End Angular Testing with Protractor(量角器的一般介绍很好)
我们进一步讨论这个问题,并在我询问的关于实施此处列出的解决方案的另一个问题中回答原始问题,该问题几乎完成并完成了我必须在 it
测试。