小编Bri*_*ine的帖子

量角器:如何单击页面对象中的所有删除按钮

我有一个包含3行数据和3个删除按钮的表.我想删除所有数据行,所以我试图在我的页面对象中编写一个方法来执行此操作...这应该是一个快照,但我不能让它工作.我正在尝试这样:

this.rows = element.all(by.repeater('row in rows'));

this.deleteAllFriends = function() {
    this.rows.each(function(row) {
        row.$('i.icon-trash').click();
    })
};
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:

Error: Index out of bound. Trying to access index:2, but locator: by.repeater("row in rows") only has 1 elements
Run Code Online (Sandbox Code Playgroud)

很明显,索引量角器预计接下来不再存在,因为它已被删除.我该如何解决这个问题?

这也不起作用并抛出相同的错误:

this.deleteButtons = $$('i.icon-trash');

this.deleteAllFriends = function() {
    this.deleteButtons.each(function(button) {
        button.click();
    });
};
Run Code Online (Sandbox Code Playgroud)

这也行不通......

this.deleteAllFriends = function() {
    while(this.deleteButton.isDisplayed()) {
        this.deleteButton.click();
    }
};
Run Code Online (Sandbox Code Playgroud)

protractor

6
推荐指数
1
解决办法
1671
查看次数

如何检查Protractor中的列中是否找到文本

我试图断言名称显示在表的列中.我编写了一个inResults函数,它将迭代列的文本以查看是否存在名称.这是我正在尝试的:

页面对象:

this.names = element.all(by.repeater('row in rows').column('{{row}}'));

this.inResults = function(nameString) {
    var foundit = '';
    this.names.each(function(name) {
        name.getText().then(function(it) {
            console.log(it); // each name IS printed...
            if(it == nameString) {
                console.log('it\'s TRUE!!!!'); // this gets printed...

                foundit = true;
            }
        });
    });
    return foundit; // returns '' but should be true?
};
Run Code Online (Sandbox Code Playgroud)

规格期望:

expect(friendPage.inResults('Jo')).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)

两个控制台语句按预期打印...但我的期望失败,因为foundit价值仍然存在''.我已经尝试了很多方法而且都没有.我错过了什么?

protractor

5
推荐指数
2
解决办法
6097
查看次数

如何在Protractor中处理表数据

在量角器中,如何处理重复内容,例如表格?例如,给定下面的代码,即踢出一个表3列:Index,Name并且Delete-Button在每一行中:

<table  class="table table-striped">
<tr ng-repeat="row in rows | filter : search"  ng-class="{'muted':isTemp($index)}">
  <td>{{$index+1}}</td>
  <td>{{row}}</td>
  <td>
    <button class="btn btn-danger btn-mini" ng-click="deleteRow(row)" ng-hide="isTemp($index)"><i class="icon-trash icon-white"></i></button>
  </td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

在我的测试中,我需要根据给定的名称单击删除按钮.在Protractor中找到这个的最佳方法是什么?

我知道我可以抓取rows.colum({{row}})文本,得到它的索引,然后点击button[index],但我希望有一个更优雅的解决方案.

例如,在Geb中,您可以将行定位器传递给模块,然后使用列指示符对每行进行切块.那个解决方案让我盯上了Protractors的地图方法......

protractor

4
推荐指数
1
解决办法
2万
查看次数

如何在所有测试完成后(而不是每个文件)制作分片量角器测试报告?

当分片测试(也称为并行运行测试;即:)shardTestFiles: true时,Protractor 不会在所有测试完成时报告结果,而是在完成时报告每个文件的结果。

有没有人有解决方法?

我试过使用带有钩子和的内联插件,但都没有改变这种行为(仍然是每个测试文件报告)。我也尝试设立的记者外,这里建议,而且,没有喜悦。teardownpostTestonPrepare

我希望有一个简单的解决方案......但我不会惊讶地发现人们将他们的结果放入数据库......也是一个可以接受的答案。

jasmine protractor

4
推荐指数
1
解决办法
2549
查看次数

如何根据另一个元素的文本单击一个元素

给定多行用户表...

<tr>
  <td class="cell--select">
    <input class="choice__input" type="checkbox">
  </td>
  <td>
    <div class="user">
      <ul class="user-info">
        <li class="name">Jane Doe</li>
      </ul>
    </div>
  </td>
</tr><tr>
...
Run Code Online (Sandbox Code Playgroud)

我想选择具有给定用户名的行,然后单击该行上的复选框。我尝试了多种方法来做到这一点,包括withText和/或parent()和/或find()等...,但没有任何效果。

通常,我会抓住所有的li.names,检查正确的名称,然后使用索引来检查正确的复选框,但是我也想不出一种方法来实现。

卡住...想法?

automated-tests web-testing selector e2e-testing testcafe

2
推荐指数
1
解决办法
75
查看次数