господи, спасибо ОГРОМНОЕ! Пыхтела с этим Page Object часа 2, пока не нашла ваше видео. Пыталась сделать так же, но интуитивно. Застряла на моменте с инициализацией драйверов. ЛАЙК!
@@ivanstrelka3448 в данном видео используется Selenium + TestNG. Рекомендую следующим шагом ознакомиться с Selenide - код будет короче, нагляднее. Так же рекомендую поработать с Selenoid - удобно и быстро развернет окружение с браузерами. - testng.org/doc/ - github.com/aerokube/selenoid - www.selenium.dev/
для начинающих отличное видео ) Но чем больше углубляться в паттерны автотестов, тем больше творческой работы) PageObject только верхушка , а все интересное внизу))
6:31 А зачем вы в page object кладёте уже данные, когда их надо класть в тесте самом? (admin,changeme). Условия написали длинно, можно и короче раз два условия всего. Заложить бы данные параметризованные и тогда на успешный логин и неуспешный один тест был бы. Не совсем понял почему Вы локаторы не вынесли отдельно в LoginPage, они же тоже могут повторяться.
проверять нахождение на целевой странице можно, если писать локаторы отталкиваясь от контейнера: локатор целевой страницы. локатор элемента страницы, тогда мы не нажмем кнопку там где не надо
метод enterUserName и enterPassword принимают на вход стрингу, которая в последствии никак в них не используются. По сути в методах захардкоженные значения "admin" и "changename"... это конфузит.
Большое спасибо! Вопрос! На 3:04 Вы говорите про 100-200-300 подобных тестов на разную функциональность. А можно, пожалуйста, примеры такой функциональности? Спасибо!
Спасибо, за вопрос Richard. Представьте себе Profile Page - в которой вам необходимо получить отчет о действиях пользователя, изменить права. Добавьте к этому набор дополнительных опций "включить выходные дни", "исключить пустые поля", "разрешить", "запретить". Так же добавьте к этому негативные сценарии и получиться хорошая пачка тестов с совпадающими предварительными шагами.
Надеюсь эта ветка ещё живая Появился вполне закономерный вопрос, ответа на который, как ни странно, нигде не смог найти... Есть допустим у меня сайдбар, который одинаков на 80% страниц моего приложения. Как хэндлить такую ситуацию? Копипастить в эти самые 80% классов? Было бы логично вынести его в отдельный класс. Но! Что, если у меня таких объектов, как этот сайдбар несколько десятков - хэдеры, футеры, всплывающие окна, строки поиска, просто дублирующиеся на нескольких страницах элементы? Плодить кучу классов, помимо собственно страниц?
Хороший вопрос! Коротко - да, я так бы и делал. Если это не сработает или упретесь в какой-то нюанс - пишите новый комментарий - мне будет интересно узнать детали. Удачи!
Мартин Фаулер в своём описании паттерна PageObject подчеркивает, что он не должен равняться странице: Despite the term "page" object, these objects shouldn't usually be built for each page, but rather for the significant elements on a page
Спасибо, Владимир - вы правы. Следующее видео «ХардКод» объяснит, как делать лучше. В этом видео все внимание сосредоточено на том как начать применять PageObject и что бы не перегружать его информационно я не акцентировал на этом внимание.
Вообще ничего не понял🥲 в двух словах это вообще о чем? Если что изучаю автотестирование на питон, но в целом должно же быть что то понятно? Это что то вроде images = pytest.driver.find_elements(By.XPATH, "//tbody//img"), только вместо "//tbody//img", я создаю стороннюю переменную, куда кладу этот локатор? Чтобы при изменении не пришлось менять локатор во всех тестах.
А когда уже уйдет образ что айтишники задроты и мальчики зайчики. Можно было одеть рубашку поприличнее , в зал пойти лишний вес спалить и снять эти дурацкие очки хоть на момент записи
@@iloveand120010 парни смотрите видео о программистах от психолога Вероники Степановой . У вас после просмотра есть 2 варианта , ещё сильнее обидеться или сделать выводы, возможно что то поменять.
Как сказал бы Фромм - вы батенька по части никрофилии любитель будете...если книги толще колобка вам не по зубам - послушайте того кто уже ознакомился и сложил своё мнение ua-cam.com/video/fYWSud-mZew/v-deo.html
толково расписано, спасибо. Помогает на наглядном примере объяснить: "зачем автотестеру знать об инкапсуляции"
Рады, что было полезно!
Как же здорово, что представлены наглядные примеры кода! Все понятно и доступно!
I guess it is quite randomly asking but do anybody know of a good site to stream newly released tv shows online?
@Crew Sawyer Flixportal =)
@Alden Ezra thanks, signed up and it seems like they got a lot of movies there =) I really appreciate it !
@Crew Sawyer you are welcome =)
господи, спасибо ОГРОМНОЕ! Пыхтела с этим Page Object часа 2, пока не нашла ваше видео. Пыталась сделать так же, но интуитивно. Застряла на моменте с инициализацией драйверов. ЛАЙК!
P.S Презентация во вложениях к уроку тоже помогла. Это я к тому, что она там не зря ;)
Раді, що були корисні 💪
Использование PageObject облегчает чтение и работу с кодом, - доступно изложена тема!
Удачный формат - код+видно того, кто рассказывает! Ощущение, будто разговор face to face, а не сухое изложение информации)
Спасибо огромное за толковое объяснение! У вас редкий талант доходчиво и наглядно объяснять.
Раді, що стали в нагоді 💙
Спасибо за доступное объяснение! Стало понятнее, куда копать дальше
Спасибо за объяснение!
Спасибо за видео. Очень удобный формат (короткие видео) для того, что освежить в памяти основные моменты по Page Object
Отличное объяснение, очень доступно! Мне понравился "бонус" - проверка, что мы находимся на нужной странице, нужная штука.
Спасибо Hillel и в частности Артуру! Очень структурированно изложена вся информация, видео было полезно
Супер, здорово объяснил, да еще с примером.
спасибо, хорошо и доступно объяснили...
Дякуємо, що дивитесь 💙
спасибо
Пишите свои варианты тем с которыми не удалось до конца разобраться - разберемся вместе =)
Привет. Спасибо за видео. А что за фреймворк гэп? Можешь ссылку скинуть? Спасибо
@@ivanstrelka3448 в данном видео используется Selenium + TestNG. Рекомендую следующим шагом ознакомиться с Selenide - код будет короче, нагляднее. Так же рекомендую поработать с Selenoid - удобно и быстро развернет окружение с браузерами.
- testng.org/doc/
- github.com/aerokube/selenoid
- www.selenium.dev/
@@ivanstrelka3448 наверно имелось в виду gebish.org
@@serjpavlenko спасибо
для начинающих отличное видео ) Но чем больше углубляться в паттерны автотестов, тем больше творческой работы) PageObject только верхушка , а все интересное внизу))
1:30 - нет события нажатия на кнопку "Войти". Тест упадет
6:31 А зачем вы в page object кладёте уже данные, когда их надо класть в тесте самом? (admin,changeme). Условия написали длинно, можно и короче раз два условия всего.
Заложить бы данные параметризованные и тогда на успешный логин и неуспешный один тест был бы.
Не совсем понял почему Вы локаторы не вынесли отдельно в LoginPage, они же тоже могут повторяться.
Хорошее видео.Спасибо
Спасибо за видео! Доступные обьяснения на очень нужную тему!
if (...) {
return true;
} else {
return false;
}
это конечно сильно))
Код для новичков =) Вы уже переросли этот код =)
Отличное объяснение!
Приятно слышать!
Удалоь применить знания?
@@DigitalNomad-j2e Да, к тому же я сейчас прохожу интервью и про Page Object Model часто спрашивают, просят подробнее объяснить.
проверять нахождение на целевой странице можно, если писать локаторы отталкиваясь от контейнера: локатор целевой страницы. локатор элемента страницы, тогда мы не нажмем кнопку там где не надо
PageObject классный паттерн, очень наглядно
метод enterUserName и enterPassword принимают на вход стрингу, которая в последствии никак в них не используются. По сути в методах захардкоженные значения "admin" и "changename"... это конфузит.
Тот же вопрос в голове)
Есть видео про базовые классы (общие)? Хотелось бы посмотреть пример.
Посмотрел чтобы убедится что я правильно понимаю.
Большое спасибо! Вопрос! На 3:04 Вы говорите про 100-200-300 подобных тестов на разную функциональность. А можно, пожалуйста, примеры такой функциональности? Спасибо!
Спасибо, за вопрос Richard.
Представьте себе Profile Page - в которой вам необходимо получить отчет о действиях пользователя, изменить права. Добавьте к этому набор дополнительных опций "включить выходные дни", "исключить пустые поля", "разрешить", "запретить". Так же добавьте к этому негативные сценарии и получиться хорошая пачка тестов с совпадающими предварительными шагами.
Хороший доклад
Спасибо, приятно слышать =)
Ссылки на pastebin, которые забыли вставить в описание к видео
Test: pastebin.com/s2MKg0s5
PageObject: pastebin.com/myW0LHSc
Благодарю!
У нас тут созревает отличное комьюнити =)
Надеюсь эта ветка ещё живая
Появился вполне закономерный вопрос, ответа на который, как ни странно, нигде не смог найти...
Есть допустим у меня сайдбар, который одинаков на 80% страниц моего приложения.
Как хэндлить такую ситуацию? Копипастить в эти самые 80% классов?
Было бы логично вынести его в отдельный класс. Но! Что, если у меня таких объектов, как этот сайдбар несколько десятков - хэдеры, футеры, всплывающие окна, строки поиска, просто дублирующиеся на нескольких страницах элементы? Плодить кучу классов, помимо собственно страниц?
Хороший вопрос!
Коротко - да, я так бы и делал. Если это не сработает или упретесь в какой-то нюанс - пишите новый комментарий - мне будет интересно узнать детали. Удачи!
Как вариант можно вынести все повторяющиеся элементы в один класс и обозвать как-нибудь вроде CommonComponents, MasterPage
Четенько
Приятно слышать!
Удалось применить знания?
Мартин Фаулер в своём описании паттерна PageObject подчеркивает, что он не должен равняться странице:
Despite the term "page" object, these objects shouldn't usually be built for each page, but rather for the significant elements on a page
Благодарю. Пора выпустить новое видео.
Нет никаких Мартинов Фаулеров! Выдумки это всё! Есть только Генка из шестого "б", а всё остальное - чистейшей воды вымысел!
Артур, движение указки на слайде не видно к сожалению( Але доклад супер, Дякую!
Ruslan Hasiuk спасибо - попробуем что-то придумать)
Почему в классе страницы методы заполнения полей логина и пароля заполняют их не параметрами методов, а захардкожеными значениями (слайд 11)???
Спасибо, Владимир - вы правы.
Следующее видео «ХардКод» объяснит, как делать лучше.
В этом видео все внимание сосредоточено на том как начать применять PageObject и что бы не перегружать его информационно я не акцентировал на этом внимание.
@@DigitalNomad-j2e а где это следующее видео можно глянуть?
Вообще ничего не понял🥲 в двух словах это вообще о чем? Если что изучаю автотестирование на питон, но в целом должно же быть что то понятно? Это что то вроде images = pytest.driver.find_elements(By.XPATH, "//tbody//img"), только вместо "//tbody//img", я создаю стороннюю переменную, куда кладу этот локатор? Чтобы при изменении не пришлось менять локатор во всех тестах.
А когда уже уйдет образ что айтишники задроты и мальчики зайчики. Можно было одеть рубашку поприличнее , в зал пойти лишний вес спалить и снять эти дурацкие очки хоть на момент записи
по ходу у тебя питон вдвое меньше чем ЧСВ.
Молодой человек. Тут подают знания, а не внешний вид. Если вам что-то не нравиться то можете смело идти за вином=)
@@iloveand120010 парни смотрите видео о программистах от психолога Вероники Степановой . У вас после просмотра есть 2 варианта , ещё сильнее обидеться или сделать выводы, возможно что то поменять.
Как сказал бы Фромм - вы батенька по части никрофилии любитель будете...если книги толще колобка вам не по зубам - послушайте того кто уже ознакомился и сложил своё мнение ua-cam.com/video/fYWSud-mZew/v-deo.html