javascript - 根据内容在表中选择一行并单击所选行中的链接 - Protractor

标签 javascript angularjs protractor pageobjects

我有一个如下所示的页面对象:

<table border>
  <th>Email</th>
  <th>action</th>
  <tr current-page="adminUsers.meta.page">
    <td><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c5a4a1a8acab85a0bda4a8b5a9a0eba6aaa8" rel="noreferrer noopener nofollow">[email protected]</a></td>
    <td><a href="" ng-click="adminUsers.onRemove(user, adminUsers.meta.page)">Delete permanently</a></td>
  </tr>
  <tr current-page="adminUsers.meta.page"> 
    <td><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d1bcb0a5b8bdb5b091a2bfb0a1b4ffb2bebc" rel="noreferrer noopener nofollow">[email protected]</a></td>
    <td><a href="" ng-click="adminUsers.onRemove(user, adminUsers.meta.page)">Delete permamently</a></td>
  </tr>
</table>

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

这是我根据 How to find and click a table element by text using Protractor? 得出的结论:

describe('Admin panel', function() {

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

    var re = new RegExp("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9ef3ffeaf7f2faffdeedf0ffeefbb0fdf1f3" rel="noreferrer noopener nofollow">[email protected]</a>");
    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
  });
});

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

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

最佳答案

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

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

关于javascript - 根据内容在表中选择一行并单击所选行中的链接 - Protractor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39047750/

相关文章:

javascript - 我定义了一个倒计时函数,但是没有输出?

javascript - Google Drive OAuth 在某些浏览器上触发 origin_mismatch

angularjs - Protractor (WebDriverJS)无法切换到窗口。 nameOrHandle 未定义

protractor - 尝试自动化登录页面的 e2e 时出现错误 "Failed: Fn is not a function"

javascript - SSL 破坏了 socket.io

javascript - JavaScript 运行时如何将 BINARY( double 浮点格式)转换回 DECIMAL

javascript - Express Router : How do I get parameters?(不是 URL 段)

AngularJS 1.2.0 $resource 响应为空

javascript - Protractor :向下滚动在 Chrome 中不起作用

javascript - YouTube 视频自动播放无法在 iPhone 设备的 Chrome 上运行