Как нажать на кнопку с почти таким же классом, используя транспортир?

У меня есть несколько кнопок с двумя классами:

<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 ответа

Решение

Я использовал:

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

и работал.

Самый чистый способ, которым я мог придумать, это проверять регулярные выражения.

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 и если это так, он щелкает этот элемент.

Просто используйте 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();
        }
    });
})
Другие вопросы по тегам