WebdriverIO предоставляет богатый набор методов для управления элементами на веб-странице, выполнения действий пользователя и проверки состояния интерфейса. Эти методы делятся на несколько категорий: поиск элементов, взаимодействие с ними, получение данных и выполнение действий над страницей.
Для работы с элементами используется функция $ для
одного элемента и $$ для коллекции элементов.
const loginButton = $('#login'); // Один элемент по CSS-селектору
const menuItems = $$('.menu-item'); // Массив элементов
Особенности поиска:
$ возвращает объект Element, который
поддерживает методы WebdriverIO.$$ возвращает массив объектов Element,
позволяющий работать с коллекциями.Совет: для динамически меняющихся элементов лучше
использовать методы ожидания (waitForExist,
waitForDisplayed).
Основные действия над элементами:
const submitButton = $('#submit');
submitButton.click();
click() симулирует нажатие.element.scrollIntoView() перед
кликом, если элемент может быть вне видимой области.const usernameInput = $('#username');
usernameInput.setValue('user123');
setValue очищает поле перед вводом текста.addValue.const searchInput = $('#search');
searchInput.clearValue();
const select = $('#country');
select.selectByVisibleText('Россия');
select.selectByAttribute('value', 'ru');
select.selectByIndex(0);
const title = $('#title').getText();
const value = $('#email').getValue();
const type = $('#password').getAttribute('type');
const color = $('#header').getCSSProperty('color');
getAttribute получает значение указанного
атрибута.getCSSProperty возвращает объект с данными о
CSS-свойстве (value, parsed,
property).const isDisplayed = $('#modal').isDisplayed();
const isEnabled = $('#submit').isEnabled();
const isSelected = $('#checkbox').isSelected();
browser.url('https://example.com');
browser.back();
browser.forward();
browser.refresh();
url открывает страницу.back и forward управляют историей
браузера.refresh обновляет текущую страницу.const handles = browser.getWindowHandles();
browser.switchToWindow(handles[1]);
browser.closeWindow();
getWindowHandles возвращает массив идентификаторов
окон.switchToWindow переключает фокус на выбранное
окно.closeWindow закрывает активное окно.browser.acceptAlert();
browser.dismissAlert();
const alertText = browser.getAlertText();
browser.sendAlertText('Ответ');
alert,
confirm и prompt.WebdriverIO предоставляет API actions для эмуляции
сложных пользовательских сценариев.
browser.performActions([{
type: 'pointer',
id: 'mouse1',
parameters: { pointerType: 'mouse' },
actions: [
{ type: 'pointerMove', duration: 0, x: 100, y: 200 },
{ type: 'pointerDown', button: 0 },
{ type: 'pointerUp', button: 0 }
]
}]);
browser.releaseActions();
releaseActions сбрасывает активные действия.Для стабильных тестов крайне важно использовать ожидания:
const loginButton = $('#login');
loginButton.waitForDisplayed({ timeout: 5000 });
loginButton.click();
waitForDisplayed ждёт появления элемента на
странице.waitForExist проверяет наличие в DOM.waitUntil позволяет задать кастомное условие.const frame = $('#frameId');
browser.switchToFrame(frame);
// действия внутри фрейма
browser.switchToParentFrame();
switchToFrame переключает контекст на iframe.switchToParentFrame возвращает к основному
документу.const element = $('#footer');
element.scrollIntoView();
browser.execute(() => window.scrollBy(0, 500));
scrollIntoView прокручивает страницу до элемента.execute позволяет выполнять произвольный JS-код для
сложных сценариев.$ / $$.isDisplayed,
isEnabled, isSelected).click, setValue,
selectBy…).getText, getValue,
getAttribute).waitForDisplayed, waitUntil) для
стабильности.performActions.Эта структура позволяет строить устойчивые, читаемые и расширяемые тесты на WebdriverIO для любых веб-приложений.