0

如何处理来自 AngularJS / Karma e2e 测试的动态添加的表单字段?我可以使用哪个选择器来定位这些?

我将使用AngularJS 表单示例作为参考。

而静态表单字段,如

<input type="text" ng-model="form.name" required/>

可以像

 input('form.name').enter('change');

我将如何定位动态添加的字段?我指的是在本节中单击“添加”添加的字段:

<label>Contacts:</label>
    [ <a href="" ng-click="addContact()">add</a> ]
    <div ng-repeat="contact in form.contacts">
      <select ng-model="contact.type">
        <option>email</option>
        <option>phone</option>
        <option>pager</option>
        <option>IM</option>
      </select>
      <input type="text" ng-model="contact.value" required/>
       [ <a href="" ng-click="removeContact(contact)">X</a> ]
    </div>

编辑:输入第一个联系方式很简单。模拟点击 addContact 很简单。但是如何在添加的字段中输入下一个联系方式?我真的不能再使用相同的选择器了......以下同时更改了contact.value

input('contact.value').enter('abc@mail.com');
4

1 回答 1

0

就像您说的那样,如果您只需要输入相同的值,您就可以使用您的代码:

input('contact.value').enter('abc@mail.com');

如果需要输入不同的值,则需要更改 html 以便将类添加到相关 div:

<label>Contacts:</label>
[ <a href="" ng-click="addContact()">add</a> ]
<div class="contacts-holder" ng-repeat="contact in form.contacts">
  <select ng-model="contact.type">
    <option>email</option>
    <option>phone</option>
    <option>pager</option>
    <option>IM</option>
  </select>
  <input class="contact-input" type="text" ng-model="contact.value" required/>
   [ <a href="" ng-click="removeContact(contact)">X</a> ]
</div>

然后在您的 JS 代码中,您可以引用那些使用:

element('.contacts-holder').query(function (contacts, done) {
   //contacts is now a jquery lite element
   angular.forEach(contacts.find('.contact-input'), function( contact) {
         element(contact).input( 'whatever you want...');
   }
}

在此处阅读有关 AngularJs E2e 的更多信息

于 2013-08-22T05:18:52.400 回答