Рубрики
Без рубрики

Селенид: Мощная Платформа Для Тестирования

Многие тестировщики думают о том, чтобы начать свое путешествие в автоматизированное тестирование, посмотрев на Selenium. Большинство из них… Помечено как тестирование, java, селенид.

Многие тестировщики думают о том, чтобы начать свое приключение в автоматизированном тестировании, посмотрев на Selenium . Большинство из нас слышали о Selenium WebDriver, но когда мы начинаем копать глубже, то вскоре обнаруживаем, что создать свой собственный фреймворк не так-то просто. Большинство учебных пособий по тестированию автоматизации предполагают наличие значительных предварительных знаний или опыта. В этот момент многие люди сдаются, потому что не находят ничего “легкого”. Что необходимо, так это более легкий путь в мир автоматизированного тестирования. Селенид обеспечивает это.

Некоторое время назад мой друг показал мне фреймворк на основе селена под названием Selenide. У меня был некоторый опыт работы с Селеном поэтому я хотел знать, есть ли какие-либо другие подобные, более простые и быстрые фреймворки, которые я могу использовать в своей повседневной работе. Я обнаружил, что без какого-либо опыта каждый может подготовить свой собственный скелет для написания автоматизированных тестовых сценариев с использованием Selenide, и это будет быстрее, чем подготовка того же скелета с помощью Selenium. Почему Селенид? Что ж, это может быть хорошим началом для начинающих и новым инструментом для продвинутых тестировщиков автоматизации.

Итак, что такое Селенид и почему его можно использовать как для начинающих, так и для продвинутых тестировщиков автоматизации?

Selenide – это платформа тестирования, основанная на Selenium WebDriver . Как говорится на странице создателей: он поставляется с мощными селекторами, простой настройкой, кратким свободным API для тестов, поддержкой Ajax для стабильных тестов.

Драйверы для большинства распространенных браузеров поставляются в комплекте с Selenide.

Вам нужно будет настроить драйвер вашего браузера. Приведенные ниже примеры показывают, как это сделать для Firefox.

Селен, использующий драйвер Firefox:

System.setProperty("webdriver.gecko.driver",
   "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver webDriver = new FirefoxDriver();
webDriver.get("https://sonalake.com");

Селенид с использованием драйвера Firefox:

open(https://sonalake.com); this opens a Firefox browser with the provided url.

Если вы хотите использовать другой драйвер, например драйвер chrome, используйте этот код перед вызовом метода open():

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
System.setProperty("selenide.browser", "Chrome");

Почему селенид хорош для начинающих?

При работе с Selenium напрямую вам нужно написать больше кода для выбора нужного элемента. Для элемента вам нужно ввести следующее: driver.findElement(по……..) в Selenide driver.findElement упрощен до $. Конечно, вы можете использовать нотацию фабрики страниц в Selenium, но это все равно больше кода, чем в Selenide.

Разве это не здорово?

Но что, если вы хотите выбрать набор элементов? В Selenium вам нужно использовать driver.findElements… в Селениде это было бы $$. Это поможет вам писать меньше кода и, что более важно, более читаемый код.

Что еще дает вам Селенид?

Если вы ищете элементы с помощью консоли, вы используете почти ту же нотацию. Почему? Потому что в jQuery мы также используем $ для поиска элемента и $$ для поиска коллекции элементов.

**$**(“li”); драйвер.Поиск элемента(По имени тега(“li”));
**$**(“li”); драйвер.Поиск элемента**s**(По имени тега(“li”));
$(“#заголовок”).найти(“#меню).Найти все(“.элемент”); драйвер.Найти элемент(By.id (“заголовок”).findElement(By.id (“меню”)) .Найти элементы(По.имя_класса(“элемент”)) ;

Ожидание элементов

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

  • Мы на самом деле не знаем, сколько времени нам нужно ждать, пока мы войдем в систему или нет.
  • Мы могли бы предположить, что действие входа в систему занимает 5, 10 или более секунд. Для этой цели мы могли бы использовать неявное ожидание. Но это не очень хороший подход, потому что что, если сервер вернет ответ через 1 секунду? Затем наш тест подождет эти дополнительные 4 или 9 секунд. Еще хуже то, что если бы это заняло больше 10 секунд – наш тест провалился бы.

В Selenium мы используем явное ожидание для решения этой проблемы. Давайте сравним селен и селенид, делающие точно то же самое.

Селен:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
wait.until(  ExpectedConditions.visibilityOfElementLocated(By.className("className")));

Селенид:

$(".className").waitUntil(visible, 10000);

Утверждения

JUnit предоставляет полезные утверждения, но у Selenide есть утверждения, предназначенные для их использования для проверки элементов в веб-браузере. Вы можете легко догадаться, что делает определенное утверждение. Давайте посмотрим на пример:

Селен:

WebElement header = driver.findElement(By.tagName("h1"));
assertEquals("Header Text", header.getText());

Селенид:

$("h1").shouldHave(text("Header Text"));

Можно ли создать фреймворк менее чем за 10 минут?

Если вы хотите написать проект с нуля, создатели Selenide подготовили краткое руководство по началу работы . Кроме того, вы можете загрузить пример проекта фреймворка Я подготовился.

В своем примере я выбрал контактную форму в качестве примера.

Он содержит метод void, называемый verify Form(). Перед этим методом я добавил аннотацию “@ Тест”, который относится к библиотеке JUnit. Каждая строка этого метода является этапом нашего теста. Это выглядит немного запутанно, но я просто показываю вам концепцию этого фреймворка. Шаблоны, такие как шаблон объекта страницы, можно легко использовать с этой платформой. Я опишу каждый шаг нашего теста и соответствующие методы, которые представляют его в коде.

  1. Найдите все входные данные, используя знак $$, атрибут getname для каждого и найдите тот, для которого атрибут name содержит “ваше имя”, найдите первый и введите “Джон”.
$("input").stream().filter(el -> el.getAttribute("name").contains("your-name"))
           .findFirst().get().setValue("John");
  1. Найдите все входные данные, используя знак $$, атрибут getname каждого и найдите тот, для которого атрибут name содержит “ваш адрес электронной почты”, найдите первый и введите ” john@sonalake.com “
$("input").stream().filter(el -> el.getAttribute("name").contains("your-email"))
           .findFirst().get().setValue("john@sonalake.com");
  1. Найдите все входные данные, используя знак $$, атрибут getname для каждого и найдите тот, для которого атрибут name содержит “ваша тема”, найдите первый и введите “Я хочу здесь работать”.
$("input").stream().filter(el -> el.getAttribute("name").contains("your-topic"))
           .findFirst().get().setValue("I want to work here");
  1. Найдите элемент “.wpc7-файл” и загрузите файл, который сначала следует добавить в проект самостоятельно. В моем случае это CV_.pdf, добавленный в папку src. Используя метод uploadFile, этот файл будет добавлен в контактную форму.
$(".wpcf7-file").uploadFile(new File("src/CV_.pdf"));
  1. Найдите текстовое поле для вашего сообщения и введите “немного текста”.
$("textarea").setValue("some text");
  1. Найдите все обязательные флажки и щелкните по каждому из них.
$("input.pi-acceptance").stream().forEach(el -> { el.click();});
  1. Нажмите кнопку Отправить
$(".askjobbutton").click();

Теперь запустите код и убедитесь, что все прошло. Поэкспериментируйте с этим кодом – это лучший способ изучить новый фреймворк!

Резюме

Для всех, кто заинтересован начать свой путь с автоматизации тестирования, я бы настоятельно рекомендовал начать его с Selenide. Selenide предоставляет читаемые, простые локаторы, встроенные ожидания, читаемые методы и действия. Для получения дополнительных примеров и документации, пожалуйста, посетите Веб-сайт Селенида .

Больше Чтения

Оригинал: “https://dev.to/sonalake/selenide-a-powerful-testing-framework-2o1g”