20% Селениума, покрывающие 80% задач

Selenium — мощный инструмент автоматизации, позволяющий работать с веб-приложениями так же, как реальный пользователь. Хотя в Selenium очень много функциональных возможностей, далеко не все из них реально понадобятся.

Локаторы

Локаторы Selenium — средства идентификации веб-элементов на странице. К ним относятся:

  • ID: поиск по уникальному ID-атрибуту элемента.
  • Имя класса: Выбор элементов по их class-атрибуту.
  • XPath: Мощный язык навигации по XML-документам, используется для поиска элементов в HTML.
  • CSS: Подобно XPath, CSS-селекторы используются для поиска элементов на основе их стилей.
// Example: Using XPath to locate an element
WebElement element = driver.findElement(By.xpath("//input[@id='username']"));

Работа с элементами

После того как вы нашли элемент, можно применять различные методы для взаимодействия с ним:

  • click(): Имитирует нажатие на элемент, вызывая связанные с ним действия.
  • sendKeys(): Вводит текст в поля ввода.
  • getText(): Передает видимый текст элемента.

Изучение этих 3 базовых взаимодействий позволит моделировать большинство действий пользователей и тестировать поведение веб-приложений.

// Example: Clicking a button
WebElement button = driver.findElement(By.id("submitBtn"));
button.click();
//you can use it like
button.sendkeys("Try another")
button.getText()

Алерты и всплывающие окна

В веб-приложениях часто используются JavaScript-оповещения (алерты) или всплывающие окна для передачи пользователю сообщений (уведомлений/ оповещений) или сбора введенных пользователем данных.

Selenium предоставляет интерфейс Alert для работы с такими сценариями. Можно использовать такие методы, как accept(), чтобы нажать кнопку OK на оповещении, или dismiss(), чтобы нажать кнопку Отмена.

Обработка оповещений очень важна для сценариев, в которых взаимодействие с всплывающими окнами является частью главного потока приложения (то есть практически всегда).

// Example: Handling an alert
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
alert.accept();

Ожидания

Синхронизация — тоже важный аспект автоматизации в Selenium. Если ваш скрипт попытается взаимодействовать с элементом до того, как он будет полностью загружен, может возникнуть ошибка. В Selenium два типа ожиданий:

  • Неявное ожидание (Implicit wait): ожидает определенный период времени, прежде чем выбросить исключение.
  • Явное ожидание (Explicit wait): ожидание определенного условия перед выполнением действия.

Использование явных ожиданий с условиями (например elementToBeClickable или visibilityOfElementLocated) гарантирует, что скрипт будет взаимодействовать с элементами только тогда, когда они будут готовы.

// Example: Explicit wait for an element to be clickable
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("submitButton")));
element.click();

Data-Driven подход

Тестирование, управляемое данными (Data-Driven Testing) — это методология, в которой тестовые данные отделены от тестовых сценариев. Вместо жесткого прописывания (хардкодинга) входных данных в сценариях — вы параметризуете тесты (практический пример параметризации), что позволяет запускать один и тот же тест с разными наборами данных.

Такие фреймворки, как TestNG или JUnit, предоставляют аннотации и другие функции для внедрения тестирования, управляемого данными. Отделяя тестовые данные от логики тестирования в рамках TDD-подхода, вы улучшаете сопровождаемость тестов (maintainability) и повышаете тестовое покрытие.

// Example: Data-driven test using TestNG
@DataProvider(name = "userCredentials")
public Object[][] provideUserData() {
    return new Object[][]{
            {"user1", "password1"},
            {"user2", "password2"}
    };
}

@Test(dataProvider = "userCredentials")
public void loginTest(String username, String password) {
    // Perform login with provided credentials
}

Источник


Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас