如何使用量角器单击几乎相同 class 的按钮?

How to click at button with almost same class using Protractor?

我有几个带有两个 classes 的按钮:

<button _ngcontent-c39="" class="btn btn-block"></button>
<button _ngcontent-c39="" class="btn btn-block btn-primary"></button>

我需要点击所有带有 class "btn btn-block" 的按钮,但不想点击带有 class 的按钮"btn btn-block btn-primary"。 我已经试过了:

element.all(by.css('.btn.btn-block')).click();

但是量角器点击了这两个按钮。 我已经尝试使用 class名称定位器,但量角器找不到该元素。

element.all(by.className('.btn.btn-block)).click();

我能想到的最简洁的方法是进行正则表达式检查。

element(by.all('.btn-block')).each(function(element)
{
  let tmp = element.getAttribute('class');
  if(/^btn btn-block$/.test(tmp)) element.click();
}

基本上这将循环遍历每个具有 .btn-block class 的元素,然后检查以确保它完全具有 btn btn-block,如果有,则单击该元素.

只需使用 each() 方法并单击每个不包含 btn-primary class.

的按钮
var allButtons = element.all(by.css('.btn.btn-block'));
allButtons.each((button) => {
    button.getAttribute('class').then((buttonClass) => {
        if (!buttonClass.includes('btn-primary')) {
            button.click();
        }
    });
})

我用过:

element.all('button[class="btn btn-block"]').each(function(element){
element.click();
});

并工作。