点击量角器中的可见按钮?

时间:2015-08-25 06:29:08

标签: javascript angularjs selenium testing protractor

我有一个看起来像这样的页面。这是一个有步骤的向导。根据“step”范围变量,将显示向导的不同部分:

<div ng-show="step == 'first'">
  <button>Next</button>
</div>

<div ng-show="step == 'second'">
  <button>Next</button>
</div>

<div ng-show="step == 'third'">
  <button>Next</button>
</div>

要点击下一个按钮我会遇到问题。因为有三个。以下代码返回所有这些代码:

var next = element(by.buttonText('Next'));

并且正在做:

next.click();

将点击第一个。如何才能找到可见按钮,然后单击该按钮?

2 个答案:

答案 0 :(得分:1)

对于使用filter()过滤单个可见按钮并单击它的理解,这里有一个更清晰的版本:

function clickButton(text) {
    var buttons = element.all(by.buttonText(text));
    var visibleButton = buttons.filter(function(button) {
        return button.isDisplayed().then(function(isVisible) {
            return isVisible;
        });
    }).first();
    visibleButton.click();
}

作为奖励,如果找不到可见按钮,您也会收到错误,而不是您当前的方法,在这种情况下不会失败。

答案 1 :(得分:0)

您应该能够链接元素以指定要单击的下一个按钮。

var firstNext = element(by.css('div[ng-show="step == \'first\'"]')).element(by.buttonText('Next'));

var secondNext = element(by.css('div[ng-show="step == \'second\'"]')).element(by.buttonText('Next'));

var thirdNext = element(by.css('div[ng-show="step == \'third\'"]')).element(by.buttonText('Next'));

// We are on the first step
firstNext.click();

// We are on the second step
secondNext.click();

// We are on the third step
thirdNext.click();