根据内容在表中选择一行,然后单击所选行中的链接-量角器

ks

我有一个页面对象,看起来像这样:

<table border>
  <th>Email</th>
  <th>action</th>
  <tr current-page="adminUsers.meta.page">
    <td>[email protected]</td>
    <td><a href="" ng-click="adminUsers.onRemove(user, adminUsers.meta.page)">Delete permanently</a></td>
  </tr>
  <tr current-page="adminUsers.meta.page"> 
    <td>[email protected]</td>
    <td><a href="" ng-click="adminUsers.onRemove(user, adminUsers.meta.page)">Delete permamently</a></td>
  </tr>
</table>

我想创建一种方法,使我能够根据用户的电子邮件地址删除该用户。

这是我想出的,基于如何使用量角器按文本查找和单击表格元素?

describe('Admin panel', function() {

  it('admin deletes a user', function() {

    var re = new RegExp("[email protected]");
    var users_list = element.all(by.xpath("//tr[@current-page='adminUsers.meta.page']"));
    var delete_btn = element(by.xpath("//a[contains(text(), 'Delete permamently')]"));

    users_list.filter(function(user_row, index) {
      return user_row.getText().then(function(text) {
        return re.test(text);
      });
    }).then(function(users) {
      users[0].delete_btn.click();
    });
    // some assertion, not relevant right now
  });
});

首先,我尝试过滤要删除其用户的行(所有行都适合我的过滤器的数组,然后选择第一行-无论如何应为一行),然后单击相应的“删除”按钮。

但是,从我的调试中,我知道该方法将忽略过滤,并单击表中可用的第一个Delete按钮,而不是单击过滤后的元素中的第一个按钮。我究竟做错了什么?

ec

在这种情况下,我将使用XPath及其following-sibling轴:

function deleteUser(email) {
    element(by.xpath("//td[. = '" + email + "']/following-sibling::td/a")).click();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章