среда, 29 мая 2024 г.

Шпаргалка по XPath и CSS-селекторам

Для написания автотестов используются XPath и CSS-селекторы. Они помогают найти элемент на странице, чтобы потом с ним как-то взаимодействовать (кликнуть, ввести текст, или что-то другое).

Я видела много статей о том, что это вообще такое, но мне очень не хватало шпаргалки по разным селекторам, причем в разрезе «Вот он в CSS и он же в XPath» для сравнения. 

А мне такое для студентов надо. Поэтому решила сделать сама. Вдохновлялась страничкой «Xpath cheatsheet», но сделала на свой вкус — под автоматизацию, а не XPath вообще. И с комментариями, с ними удобнее. 

Пишите, если где-то накосячила. Хотя я все селекторы проверяла на тестовых страницах, но мало ли… И надеюсь, вам такая шпаргалка тоже пригодится! =)

(там таблички нормально отрисовываются и есть содержание кликабельное)

воскресенье, 26 мая 2024 г.

CSS, XPath: локаторы или селекторы? Разбираемся в терминах

 Я обычно слышу такие словосочетания для поиска элементов на HTML-странице:

  • CSS-селекторы
  • XPath-локаторы
Но как правильно их называть? 



Можно ли и то, и то назвать селекторами? Или локаторами? Сходила за уточнениями к Алексею Баранцеву, разработчику инструмента Selenium и автору курсов по автоматизации тестирования (где селекторы и применяем). Итак:

Почему XPath лучше для поиска N-ого элемента, чем nth-child в CSS

В CSS есть псевдокласс :nth-child() — он находит один или более элементов, основываясь на их позиции среди группы соседних элементов. ©

Но у него есть ряд минусов:

  • не срабатывает в firefox (даже когда в хроме всё нормально);
  • срабатывает с оговорками — и поэтому xpath выражение для поиска будет лучше.
Давайте посмотрим на примере.

Создадим такой html-файл (можно сделать текстовый файлик и потом переименовать расширение в «.html»):

<html>
   <body>
          <div attr='1'>Блок 1</div>
  <p>Блок 1</div>
  <div attr='2'>Блок 2</div>
  <div attr='3'>Блок 3</div>
   </body>
</html>

Открываем файлик в хроме (это важно!). 

А теперь попробуем найти второй div. Попробуем через XPath:

//div[2]

Всё работает! Найдет один элемент, второй по счету div:


Теперь попробуем через CSS:

четверг, 23 мая 2024 г.

Как в pm.sendRequest() выполнить запросы в нужном порядке

Это выдержка из статьи «Как подготовить данные для запроса в Postman через pre-request». 


В Postman есть функция pm.sendRequest(), которая позволяет выполнять запросы до выполнения вашего основного запроса. Но есть проблемка, когда мы хотим вызвать несколько запросов подряд...

Кажется, что это будет легко. Просто напишем 2 pre-request и вызовем их подряд:

pm.sendRequest(req1, done); pm.sendRequest(req2, done); 

Но если второй запрос зависит от первого, он упадет. Почему? Потому что функция pm.sendRequests асинхронна. Это значит, что она сразу отправит оба запроса, а не будет дожидаться, когда отработает req1, чтобы запустить req2. 

Что такое pm.sendRequest в Postman

Это выдержка из статьи «Как подготовить данные для запроса в Postman через pre-request». 


Метод pm.sendRequest нужен для того, чтобы асинхронно отправлять запросы в Postman до или после выполнения основного запроса (Pre-request или Post-response скрипты). Документация тут.

Зачем это нужно?

  • Pre-request — подготовить данные для выполнения текущего запроса (перед поиском создаем объект с нужными полями)
  • Post-response — чистим за собой (удаляем созданное в pre-request)

Как подготовить данные для запроса в Postman через pre-request

Принцип хорошего автотеста — «Подготовь себе данные сам. Не надейся, что они уже существуют». Такой тест можно прогнать на любом стенде, даже пустом. Сам себе всё подготовил, прогнал тест, а потом ещё почистил за собой.


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

Подготовка данных делается через функцию pm.sendRequest() в pre-request скриптах, и в этой статье я покажу, как её использовать. Показывать буду в стиле «бери и повторяй» с примерами на бесплатной системе Users.

Ссылка на ХАБР


среда, 22 мая 2024 г.

Обновление интерфейса в Postman, где теперь автотесты

Есть у меня видео на канале — Пишем первый автотест в Postman. Само видео и код автотеста остались верными, а вот интерфейс изменился. Посмотрим, как именно.


Было

Были 2 отдельные вкладки:

  • Pre-request scripts — то, что выполняется ДО запроса
  • Tests — то, что выполняется после получения ответа