当PROTRACTOR元素后面有元素时,我怎么知道当前的显示元素

时间:2016-04-03 16:26:17

标签: javascript angularjs protractor

所以我用Protractor测试时遇到了一点问题。 我试图对我朋友正在制作的节目进行新的测试。 在代码(用Angularjs编写)中有一些元素(md-sidenav)实际上隐藏了一个在另一个之后,当前显示的元素是通过按下按钮(我不知道如何,我认为ng-click和ng-class)。

当我使用该功能时:

element(by.css('locator')).isDisplayed();

我在其中一个现在没有显示的元素上执行此操作。 结果是" TRUE",因为所有元素现在都在显示,它们只是一个在另一个之后。 如果我需要知道显示的元素,我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:0)

找到所有这些内容并使用filter()过滤掉可见的内容:

$$('locator').filter(function(elm) {
    return elm.isDisplayed();
}).first();

其中$$('locator')相当于element.all(by.css('locator'))

答案 1 :(得分:0)

使用一些预期条件以便元素可单击,尝试在promise中写入所有内容。 element.all(by.id( '1stClick'))。然后(函数(){      元件(by.id( '2ndClick'))。然后(函数(){          等。,       }); }); https://angular.github.io/protractor/#/api?view=ExpectedConditions