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

时间:2018-08-08 21:08:22

标签: typescript protractor e2e-testing

我有两个带有两个类的按钮:

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

我需要单击所有类为“ btn btn-block” 的按钮,并且不想单击该类为“ btn btn-block btn-primary”的按钮。 我已经尝试过:

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

但是量角器单击这两个按钮。 我已经尝试过使用className定位器,但是量角器找不到该元素。

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

3 个答案:

答案 0 :(得分:0)

我想出的最干净的方法是进行正则表达式检查。

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

基本上,这将遍历具有.btn-block类的每个元素,然后检查以确保其具有完全btn btn-block的元素,如果确实如此,则单击该元素。

答案 1 :(得分:0)

只需使用each()方法,然后单击每个不包含btn-primary类的按钮即可。

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

答案 2 :(得分:0)

我用过:

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

工作了。