В WebdriverIO работа с атрибутами элементов является ключевым
аспектом автоматизации тестирования веб-приложений. Атрибуты HTML
предоставляют дополнительную информацию о состоянии элементов, их
свойствах и поведении на странице. WebdriverIO предлагает несколько
подходов для чтения этих данных, включая методы
getAttribute, getCSSProperty и
getText.
getAttributeМетод getAttribute позволяет получить значение любого
атрибута элемента. Его синтаксис:
const value = await $('селектор').getAttribute('имяАтрибута');
Примеры использования:
const inputValue = await $('#username').getAttribute('value');
// Получение текущего значения input
const placeholderText = await $('input[name="email"]').getAttribute('placeholder');
// Получение текста placeholder
Особенности:
null.disabled, checked или
aria-*.getCSSPropertyДля получения стиля элемента используется метод
getCSSProperty. Он возвращает объект с информацией о
конкретном CSS-свойстве.
const color = await $('#submit').getCSSProperty('color');
console.log(color.value);
Особенности:
property,
value, parsed.getTextХотя getText не является прямым способом чтения
атрибутов, он часто используется для проверки текстового содержимого
элементов. Полезен для элементов <button>,
<label>, <div>.
const buttonText = await $('button#login').getText();
Особенности:
value или
placeholder.getAttribute для проверки
соответствия состояния и текста.WebdriverIO позволяет работать с массивами элементов через метод
$$. Для чтения атрибутов всех элементов используется
итерация с map или for…of.
const items = await $$('ul#menu li');
const texts = [];
for (const item of items) {
const text = await item.getAttribute('data-name');
texts.push(text);
}
console.log(texts);
Особенности:
Важной практикой является ожидание изменения атрибутов перед
взаимодействием. WebdriverIO предлагает waitUntil:
await browser.waitUntil(async () => {
const attr = await $('#submit').getAttribute('disabled');
return attr === null;
}, {
timeout: 5000,
timeoutMsg: 'Кнопка не стала активной'
});
Особенности:
aria-* и
data-*.WebdriverIO позволяет работать с checkbox, radio и другими элементами формы:
const isChecked = await $('#subscribe').isSelected();
Использование isSelected упрощает проверку состояния
элемента без прямого чтения checked:
isSelected() возвращает true или
false.getAttribute для проверки
состояния элементов, особенно динамических.getCSSProperty.getText только для проверки видимого
текста.$$ с
асинхронными итерациями.waitUntil.Этот набор методов обеспечивает полный контроль над атрибутами и состоянием элементов в WebdriverIO, позволяя создавать надежные и устойчивые к изменениям тесты веб-приложений.