Создание проекта (фреймворка) - Page-Object model (POM). Стек: Python, Selenium, Pytest

Хочешь получить практическое задание, основывающееся на этом видео?
Получи его здесь: okulik.by/item/pom-practice/
Мой курс по тестированию и автоматизации:
Занятия в группе: okulik.by/
Видеокурс с домашними заданиями: okulik.by/video/
------------------------------------------------
Для полноценной автоматизации тестирования все автотесты должны иметь какую-то структуру. В идеале, не должно быть сплошного копирования одного и того же кода. И в некоторых ситуациях, нужно делать так, чтобы тесты были понятны незнакомым с программированием коллегам. Всё это можно решить путем создания фреймворка, основанного на паттерне Page Object. В этом видео - основные его особенности.
--------------------------------------------
Мой Instagram: / tester.senior
Мой LinkedIn: / eugeneokulik
Telegram канал: t.me/SeniorTesterEugene
00:00 Привет
00:53 Простые тесты
03:03 Проблемы автотестов
05:23 Оптимизация тестов, создание структуры
08:20 Страницы - основа фреймворка
10:28 Описываем несуществующую страницу
12:19 Класс для каждой страницы
13:30 Описание элементов страницы
16:21 Тесты, основанные на фреймворке
27:43 Дополнительные способы описания элементов
30:02 Конечная структура

Пікірлер: 57

  • @a1berich
    @a1berichАй бұрын

    Вот таких тем мало по паттерну! Спасибо!

  • @user-zr6hd9gi7l
    @user-zr6hd9gi7l7 ай бұрын

    Спасибо за достаточно понятную, максимально структрурированную и полезную информацию

  • @FreddieZak
    @FreddieZak7 ай бұрын

    Спасибо за проделанную работу!

  • @rmstr7
    @rmstr74 ай бұрын

    Огромное спасибо за проделанную работу !!!

  • @kidsuper6767
    @kidsuper67678 ай бұрын

    Отличное видео, спасибо!

  • @yuliapopova3273
    @yuliapopova32738 ай бұрын

    Спасибо за видео, очень помогло, тем более бесплатное)

  • @user-els1z6htp7
    @user-els1z6htp73 ай бұрын

    Содержательно. После видео есть общая картина структуры🤝

  • @SeniorTester

    @SeniorTester

    3 ай бұрын

    Класс!

  • @kevinkeegan6076
    @kevinkeegan6076 Жыл бұрын

    Hello 👋 hello ,если не трудно можете пожалуйста залить это на гит хаб и скинуть ссылку .спасибо.

  • @Lyudmila157
    @Lyudmila1575 ай бұрын

    все четко, понятно, спасибо!

  • @SeniorTester

    @SeniorTester

    5 ай бұрын

    Пользуйтесь)))

  • @DemetriuszStrykowski
    @DemetriuszStrykowski10 ай бұрын

    Спасибо! Очень полезный канал у вас! Поддержим крутой канал комментариями! ✌🤞

  • @kevinkeegan6076
    @kevinkeegan6076 Жыл бұрын

    You best 👌 teacher and good luck 👍

  • @user-ws4nz8fu6z
    @user-ws4nz8fu6z2 ай бұрын

    Мощно :)

  • @schmexus
    @schmexus8 ай бұрын

    Отличное объяснение! Всё понятно, было бы здорово увидеть пример создания фреймворке общие, которые можно использовать для разных сайтов к примеру, либо фреймворк для самого pytest?

  • @SeniorTester

    @SeniorTester

    8 ай бұрын

    Не думаю, что такое возможно. Все-таки фреймворк создаётся под конкретный сайт, с конкретными локаторами и последовательностями действий, которые возможны только для этого сайта

  • @kevinkeegan6076
    @kevinkeegan6076 Жыл бұрын

    Only your video l understand 😊OOП и class 😊

  • @SuperChakichaki
    @SuperChakichaki2 ай бұрын

    Спасибо за видео. Подскажите, пожалуйста, а если в рамках одного теста будет использоваться несколько классов страниц (например, начали тест на одной странице, а закончили на другой), как в таком случае происходит инициализация объектов класса? Вначале в переменную присваиваем объект класса страницы main, делаем клик по переходу на вторую страницу с другим классом. В таком случае нужно опять создавать переменную и передавать в нее браузер?

  • @SeniorTester

    @SeniorTester

    2 ай бұрын

    Ну, что-то около того, да.

  • @stone_92
    @stone_9211 ай бұрын

    Добрый день ! Подскажите, пожалуйста, почему может быть, если файл conftest лежит в корне проекта, то тест выдает ошибку из-за того, что фикстуры не найдены (импорт помогает, но должно без него ведь работать), а если файл conftest перенести в папку в тестами, то всё проходит корректно ? В чем причина, не могли бы вы мне подсказать ?

  • @SeniorTester

    @SeniorTester

    11 ай бұрын

    Нужно смотреть на структуру проекта и на то как вы запускаете тесты. Можете мне написать в инстаграм- разберёмся

  • @yuliapopova3273
    @yuliapopova32738 ай бұрын

    Подскажите, есть в каком -то видео автотест с обращением к API и проверкой результата?

  • @SeniorTester

    @SeniorTester

    8 ай бұрын

    Есть обращение к апи и распечатывание результата kzread.info/dash/bejne/Z2eLxMaaaNnacbQ.html

  • @yuliapopova3273

    @yuliapopova3273

    8 ай бұрын

    @@SeniorTester Как проверка возвращаемого результата в реальных тестах с API происходит, через assert или что-то другое используют?

  • @johnyelasto

    @johnyelasto

    8 ай бұрын

    ​@@yuliapopova3273assert проверят вообще всё что хочет и используется постоянно

  • @inzoddex8312
    @inzoddex83124 ай бұрын

    В моменте, когда ты в классе BasePage описываешь метод find 11:37 во время печати self.browser. на этом месте как-то можно сделать, чтобы выходили подсказки методов, как это реализовать?

  • @SeniorTester

    @SeniorTester

    4 ай бұрын

    Это делается с помощью аннотаций Нужно импортнуть Webdriver из примерно отсюда from selenium.common.remote.webdriver import WebDriver (в точности пути не уверен, с телефона пишу) А потом добавить аннотацию в инит def __init__(driver: WebDriver) И тогда во всём этом классе и во всех дочерних появятся подсказки. Если что, пиши мне в телегу

  • @ramilhafiz6741
    @ramilhafiz67414 ай бұрын

    Огромное спасибо за Ваш труд. Лучшие уроки по данной тематике. У меня вопрос: как при запуске нового теста оставаться на той же уже открытой странице?

  • @SeniorTester

    @SeniorTester

    4 ай бұрын

    Нужно выбрать скоуп для фикстуры. Если нужно всегда оставаться на одной странице, то можно такие тесты расположить в отдельном файле и фикстуру прописать в этом файле и сделать ей scope='module'

  • @ramilhafiz6741

    @ramilhafiz6741

    4 ай бұрын

    @@SeniorTester спасибо!

  • @Ruslan-ps9rz
    @Ruslan-ps9rzАй бұрын

    Добрый день. Подскажите, плиз, это нормально если создать base_page, потом унаследовав ее сделать Login_page, а после все страницы наследовать от Login page, Что бы вызывать методы логина от текущих страниц и не создавать экземпляр класса логин в тесте?

  • @SeniorTester

    @SeniorTester

    Ай бұрын

    А элементы страницы логина присутствуют на всех страницах, которые вы хотите от неё унаследовать? Нужно отталкиваться от цели. Возможно то, что вы хотите сделать, делается другими средствами

  • @user-fs7sy9fk1z
    @user-fs7sy9fk1z4 ай бұрын

    Возникает интересный эффект . Когда пишут browser.get - всё понятно , потому что так пишут во всех учебниках . А когда пишут simple_page - всё становится не понятным даже для того кто умеет программировать . Пойди разберись кто чего понапридумывал на своём проекте . У всех всё будет по разному .

  • @SeniorTester

    @SeniorTester

    4 ай бұрын

    Ну, те, кто понапридумыаал уже в своём проекте, уже не изучают основы.

  • @luckytima2315
    @luckytima23154 ай бұрын

    Не могу понять в чем проблема, не видел фикстуру я вылечил это закинув conftest в папку tests. теперь он у меня браузер failed “browser = кликнуть->зкрыть все работает , мистика

  • @SeniorTester

    @SeniorTester

    4 ай бұрын

    Охх, ну тут бы на код посмотреть

  • @luckytima2315

    @luckytima2315

    4 ай бұрын

    @@SeniorTester я не знаю как это работает, но на версий питона 3.8 все норм 😅

  • @loginoff6322
    @loginoff63223 ай бұрын

    Привет, а путь к драйверу или сам драйвер где ?

  • @SeniorTester

    @SeniorTester

    3 ай бұрын

    Уже полтора года как не нужно с ним заморачиваться. Селениум запилил функцию selenium manager, которая сама разруливает все заморочки с драйвером

  • @zombiekiller666
    @zombiekiller66619 күн бұрын

    Здравствуйте, в vs code в терминале возникает ошибка "ModuleNotFoundError: No module named 'pages'", при том что в импорте все само подтягивается и показывает что все хорошо. Не могу разобраться(

  • @SeniorTester

    @SeniorTester

    19 күн бұрын

    А импортировали Pages или pages?

  • @SeniorTester

    @SeniorTester

    19 күн бұрын

    А, это я ерунду спросил в прошлом коменте. Нужно видеть структуру проекта, чтобы сказать вам что не так

  • @zombiekiller666

    @zombiekiller666

    18 күн бұрын

    ​@@SeniorTester Скачал PyCharm и если запустить файл с тестом через Run, то все нормально запускается и ошибку не выдает, но если открыть файл теста через терминал используя "pytest -v", то опять вылазит ошибка как в vs code ModuleNotFoundError: No module named 'pages'.

  • @zombiekiller666

    @zombiekiller666

    18 күн бұрын

    @@SeniorTester структура как у вас

  • @SeniorTester

    @SeniorTester

    17 күн бұрын

    Скорее всего, файл conftest у вас находится в папке с тестами, а не в корне проекта

  • @FreddieZak
    @FreddieZak7 ай бұрын

    Здравствуйте, это ж у вас PyCharm?

  • @SeniorTester

    @SeniorTester

    7 ай бұрын

    Да, Pycharm

  • @user-zd9kj8lf8l
    @user-zd9kj8lf8l10 ай бұрын

    fixture 'browser' not found выдаёт

  • @SeniorTester

    @SeniorTester

    10 ай бұрын

    Скорее всего, сбились настройки пайчарма. Напишите в сообщения в какую-нибудь мою соцсеть - разберемся

  • @rusmaverick95

    @rusmaverick95

    9 ай бұрын

    Создайте файл базового класса, создайте BaseClass и унаследуйте вашу фикстуру, затем используйте метод наследования BaseClass во все ваши тесты

  • @luckytima2315
    @luckytima23154 ай бұрын

    Мы больше в fixture не пишем yield?

  • @SeniorTester

    @SeniorTester

    4 ай бұрын

    Если нужны постусловия, то пишем, конечно

  • @FimaMillston
    @FimaMillston7 ай бұрын

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

  • @SeniorTester

    @SeniorTester

    7 ай бұрын

    Да ладно вам. Вполне нормально ожидать, что джун тестировщик не будет знать ничего о программировании. А какие ссылки не отображаются? Я то-ли не нашёл, то-ли youtube кому-то их показывает, а кому-то нет.

  • @FimaMillston

    @FimaMillston

    7 ай бұрын

    @@SeniorTester Проверю еще раз. Не показало, почему-то при просмотре. А по джунам - все ж когда-то джуны. По Вашим видео вполне можно начать разбиратся и понимать что и как. Спасибо!

  • @Max-gl5cl
    @Max-gl5cl3 ай бұрын

    а где вода минут на 15😁

  • @SeniorTester

    @SeniorTester

    3 ай бұрын

    Блин, сорян, забыл. В следующий раз добавлю 😜

Келесі