Как нажать на кнопку с почти таким же классом, используя транспортир?
У меня есть несколько кнопок с двумя классами:
<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();
}
});
})