无法通过量角器获取输入值

时间:2015-06-12 10:33:15

标签: javascript angularjs selenium testing protractor

我使用angularJS开发应用程序。为了测试它我使用量角器。

我想检查输入区域中的值。这是我的意见:

<input id="rank-max-range" class="form-control has-feedback" name="inputMax" type="number" placeholder="Maximum" ng-model="selectedItem.range.max" min="{{selectedItem.range.min}}" max="{{selectedItem.answers.length}}">

这是测试:

it('should be fill the max range with the given value', function() {
  element(by.id('rank-max-range')).sendKeys(2);
  expect(element(by.id('rank-max-range')).getText()).toEqual(2);
});

问题是它没有用。我在文档中发现可以使用getAttribute('value')。但就我而言,我的输入没有值属性。

我想知道是否可以检查ng-model的内容,但我找不到解决方案。

您是否知道如何实现此测试?

2 个答案:

答案 0 :(得分:5)

通常getAttribute('value')应该有效。 getText()因为输入元素没有内部文本而无法工作。

expect(element(by.id('rank-max-range')).getAttribute('value')).toEqual(2);

您是否尝试记录getAttribute('value')的结果?

答案 1 :(得分:1)

getText()肯定不会有效,因为这是一个input,一旦设置,它的值就会在value属性中。您提供的HTML不包含value,因为在未呈现页面且未设置值时,这是源HTML。 getAttribute('value')是前往此处的方式:

var numberInput = element(by.id('rank-max-range'));
numberInput.sendKeys("2");
expect(numberInput.getAttribute('value')).toEqual("2");

您实际上可以通过在控制台上转储innerHTML来查看正在设置的value

numberInput.sendKeys("2");
numberInput.getInnerHtml().then(function (html) {
    console.log(html);
});
  

我想知道是否可以检查ng-model的内容,但我找不到解决方案。

您可以使用evaluate()查看/检查模型的值:

expect(numberInput.evaluate('selectedItem.range.max')).toEqual(2);