【问题标题】:How to validate all column headers of Angular Grid in Protractor test if headers span past the width of the screen?如果标题跨越屏幕宽度,如何在量角器测试中验证 Angular Grid 的所有列标题?
【发布时间】:2023-04-05 20:38:01
【问题描述】:

我正在尝试在我的 Angular 应用程序中为以下要求编写量角器测试:

我正在尝试验证下面我的 Angular 网格中所有列标题的文本:

myPage.column_headers
      .map(function (header) {
          return header.getText()
      }).then(function (headers) {
    expect(headers).toEqual(['Column1', 'Column2', 'Column3', 'Column4', 'Column5', 'Column6']);
});

当我运行它时,我得到以下控制台错误:

Expected $.length = 3 to equal 6.
Expected $[0] = 'Col1' to equal 'Column1'.
Expected $[1] = 'Col2' to equal Column2'.
Expected $[2] = 'Col3' to equal 'Column3'.
Expected $[3] = undefined to equal 'Column4'.
Expected $[4] = undefined to equal 'Column5'.
Expected $[5] = undefined to equal 'Column6'.

作为实时用户,当我导航到该页面时,用户可以立即看到其中的 3 列。

要查看其他 3 列,您需要滚动页面/网格,所以我想知道这是否是该测试因上述错误而失败的原因。

如果是这种情况,谁能告诉我我需要做哪些更改,以便我可以验证 Angular 网格中的所有列标题?

【问题讨论】:

  • 是的,从技术上讲,这些列在您滚动之前不会出现在 DOM 中,因此您无法在它们上 getText()。您必须先将元素滚动到视图中。

标签: angular protractor angular-grid


【解决方案1】:

如果元素在 DOM 中但不存在,则应使用 .getAttribute('innerText') 而不是 .getText()

如果元素不在 DOM 中,那么您必须滚动到这些元素。将发送一个请求,解决后您可以获得其文本值。

【讨论】:

  • 好答案。不是想为 OP 说话,只是查看他的失败日志,我猜其他列不存在。否则$.length 会有正确的列数。如果缺失的列存在,选择器仍然会找到它们。
  • 感谢您的回答,但我已经尝试过.getAttribute('innerText'),不幸的是我仍然遇到同样的失败。网格中有 6 列,但导航到页面时只有 3 列可见。那么对于这个测试,我是否必须滚动网格?如果是这样,是否有我可以使用的功能?还是有其他可能的解决方案?
  • 有函数,可以查一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 2021-09-27
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
相关资源
最近更新 更多