Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何用量角器测试银栅?_Angular_Protractor_Automated Tests_Ag Grid - Fatal编程技术网

Angular 如何用量角器测试银栅?

Angular 如何用量角器测试银栅?,angular,protractor,automated-tests,ag-grid,Angular,Protractor,Automated Tests,Ag Grid,在我的应用程序中,我使用ag网格显示数据。我不确定如何在网格中选择一个字段,以便测试它是否存在。我发现的许多例子都没有多大帮助。如果有人能给我指引正确的方向,那就太好了!:)以下是我的HTML代码: <div style="height: 90%; text-align: left"> <ag-grid-angular enableColResize groupHeaders style="width: 100%; height: 100%;" [gridOptions]=

在我的应用程序中,我使用ag网格显示数据。我不确定如何在网格中选择一个字段,以便测试它是否存在。我发现的许多例子都没有多大帮助。如果有人能给我指引正确的方向,那就太好了!:)以下是我的HTML代码:

  <div style="height: 90%; text-align: left">
<ag-grid-angular enableColResize groupHeaders style="width: 100%; height: 100%;" [gridOptions]="gridOptions" (gridReady)="onGridReady($event)"
  class="ag-theme-blue" [rowData]="rowData" [columnDefs]= "columnDefs" [enableSorting]="true"
  [animateRows]="true" [rowSelection]="rowSelection">
</ag-grid-angular>
编辑:好吧,我取得了一些进步!这不是一个解决方案,而是朝着正确方向迈出的一步:)。这行代码选择ag网格中的第一列

return element(by.css('div.ag-body-container > [role="row"]'))
这一行允许我选择一个特定的索引

 return element.all(by.css('div.ag-body-container > [role="row"]')).get(2);
这一行允许我选择包含给定数据的行。例如,这里我要查找一个包含名称“TestName”的行。现在,我可以通过检查是否显示包含TestName的字段来测试是否添加了新字段。为了使这个测试更好,我可以指定我的测试添加一个非常独特的名称,以确保它在数据库中不存在

return element.all(by.cssContainingText('div.ag-body-container > [role="row"]', 'TestName'))
这个网站上的图片就是我的网格的样子

编辑2:更新了具有以下功能的等级库:

  it('should select name field', () => {




  findRow(page.rows, "TestName").then(row => {

    row.getText().then(rowText => {
      expect(rowText).toContain('TestName')

好吧,不完美,这似乎起到了作用:

return element.all(by.cssContainingText('div.ag-body-container > [role="row"]', 'TestName'))

现在我只需要弄清楚如何从字段中检索数据。

我想我已经很好地掌握了您现在要做的事情

您可以通过使用获取网格中所有行的列表

let rows=element.all(by.css('div.ag-body-container>[role=“row”])

然后,您可以使用
.filter()
从这里找到一行,其中包含您正在查找的数据。最好创建一个通用函数,允许您传入要查找的行和字符串,然后在找到元素后返回它

findRow(elements, matcher) {
  const relevantRow = elements.filter(element => {
    return element.getText().then(text => {
      return text.includes(matcher);
    });
  })
  .first()

  return relevantRow;
}
您可以从测试中调用它:
const row=findRow(rows,'Some Text')
一旦您找到了要查找的行,您就可以从那里对它执行任何需要的操作

编辑: 这里有一个更清楚的例子

// in your page object
public rows = element.all(by.css('div.ag-body-container > [role="row"]'));

// in some helper class
function findRow(rows, matcher) {
  return elements.filter(element => {
    return element.getText().then(text => {
      return text.includes(matcher);
    });
  })
  .first()
}

//in your test
helper.findRow(somePage.rows, 'Some Text').then(row => {
  row.getText().then(rowText => {
    expect(rowText).toContain('Some Text');
  });
});
如果您使用的是async/await,则会是这样

function async findRow(rows, matcher) {
  const relevantRow = await rows.filter(row => {
    return row.getText().then(text => {
      return text.includes(matcher);
    });
  }).first();

  return relevantRow;
}

//in spec
const row = await helper.findRow(somePage.rows, 'Some Text');
expect(await row.getText()).toContain('Some Text');

你能详细说明一下你想要完成什么吗?使用
ag-theme-blue
是否仅选择网格中的第一个用户?您正在尝试验证是否存在所有用户或特定用户?也许一个页面截图和一个你想要验证的内容的解释会有帮助。当然。如果我描述得不够详细,我深表歉意。我将在上面添加新的细节。谢谢,你好。我试图模拟您的函数,但在运行测试时遇到以下错误:“-Failed:elements.filter不是函数”我使用您提供的确切模型。在我的测试中,我这样调用函数:
wait page.row.click()
。在我的对象类中,我创建了这样的行变量:
row=findRow('div.ag-body-container>[role=“row”],'required value'
。任何输入都会很好!谢谢:)对不起,它应该是
元素。全部
。我没有意识到我的回答错了。我已经更新了正确的信息。谢谢。建议在对象类中的何处创建rows变量?因为我无法将行传递到我的测试类
findRows(rows,'test')
,因为找不到它。我在对象类中创建行变量,如下所示:`rows=element.all(by.css('div.ag-body-container>[role=“row”]')。我还为findRows函数创建了一个单独的类,并将其导出,以便将其导入到测试类中。多谢各位`是的,我会用一个更清楚的例子更新我的答案。好吧,这是一个奇怪的问题。。。我无法记录任何让我相信量角器并没有等待preform测试的东西,即使是异步和等待方面。出于测试目的,我加入了一个浏览器。sleep and Gradurator甚至没有执行那一行,Gradurator直接进入函数并崩溃了。所以我取出了page.navigateTo(),因为我不需要它(我的错误),现在它工作正常。谢谢你的帮助。
function async findRow(rows, matcher) {
  const relevantRow = await rows.filter(row => {
    return row.getText().then(text => {
      return text.includes(matcher);
    });
  }).first();

  return relevantRow;
}

//in spec
const row = await helper.findRow(somePage.rows, 'Some Text');
expect(await row.getText()).toContain('Some Text');