1

在 e2e 测试中,我想模拟用户在输入字段中输入。我的输入字段中有一个最大长度。我希望考虑 maxlength,但我没有成功找到解决方案。这是我尝试过的:

<input type="text" id="myField" maxlength="10" ng-model="myModel" />
<span>{{myModel}}</span>    

1)输入(“myModel”)。输入(“ABCDEFGHIJKLMNOPQRSTUVWXYZ”)。myField 输入和 myModel 模型都设置为“ABCDEFGHIJKLMNOPQRSTUVWXYZ”。预期结果:“ABCDEFGHIJ”

2) 元素("#myField").val("ABCDEFGHIJKLMNOPQRSTUVWXYZ")。myField 输入设置为“ABCDEFGHIJ”。这是完美的!但 myModel 为空。

你们有解决这个问题的办法吗?我不想使用 ngMaxlength,因为我想防止输入超过 10 个字符。

非常感谢!

4

1 回答 1

1

您可以扩展 angular-scenario dsl 并使用与此类似的函数在 ngModelController 中注入值

function typeIn(element, str) {
    var maxlength = parseInt(element.attr('maxlength'), 10);
    var value = element.val() + str;

    if (maxlength !== NaN) {
        value = value.substr(0, maxlength);
    }

    element.val(value);
    element.controller('ngModel').$setViewValue(value);
    element.scope().$apply();
}

http://jsfiddle.net/nxNm9/1/

于 2013-09-11T14:11:04.343 回答