Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Описание страницы. Статичные ID, разный контент


(James May) #1

Добрый день,

Возник вопрос.

Есть страница, посередине находится контент. Допустим, выглядит это так:

<div id="content">
	<div id="box-header"/>
	<div id="box-content"/>
</div>

Соответственно, id’шники не меняются.
Проблема в том, что в зависимости от страницы, контент может являться текстом, таблицей, формой и т.д.

Писать под каждую страницу отдельный класс - не удобно.
Писать огромную простыню, покрывающую все варианты всех страниц - еще не удобнее.

Подскажите, как поступить?

Заранее благодарю.


(rmerkushin) #2

Таких элементов много на странице? Если нет, то можно заюзать что то вроде полиморфизма, в зависимости от типа элемента на странице позволять совершать над ним определенные действия. Либо менее красивый метод, если описывать элементы как классы, можно сделать именно для таких элементов что то вроде “супер” класса который наследует все методы от возможных в этой области элементов. Плюс очень много зависит от ЯП и фреймворка или подхода к автоматизации. Да, и не совсем понятно, страница одна? У нее все элементы кроме того контента статичны? Почему не подходит вариант описать просто все элементы даже не смотря на одинаковые локаторы для контента? (вы же в любом случае будете знать какой элемент вы ожидаете в контенте, соответственно вы не станете обращаться к контенту как к форме если там картинка :smile: )


(asolntsev) #3

Просто проверяйте, что внутри, скажем, “content”, есть нужный текст. Не вдаваясь в детали. Чем тест проще и надёжнее, тем лучше.


(Александр Таранков) #4

Вопрос достаточно абстрактно поставлен. Поэтому ответ такой: отдельный класс под каждую страницу


(James May) #5

Нет, страниц с десяток.
Все элементы, т.е. меню, хедеры, футеры, все статично. Т.е. не меняются от страницы к странице.
Меняется только содержимое этого слоя с контентом. Сам контент имеет различные локаторы, поэтому объединить их не получается

Потому что получится простыня. Это крайний вариант.

До создания тестов я еще не нашел :smile:

Старался, как мог.

Этот вариант тоже остается крайним.


(Александр Таранков) #6

А какие ещё могут быть варианты?


(James May) #7

Вот я и спрашиваю :smiley: Если нет, то, наверное вариант с отдельными классами выглядит более перспективным.


(Sergey Korol) #8

А что неудобного в создании отдельных классов под эти страницы? Вы ведь когда следуете PageObject паттерну, не говорите, что это неудобно? Да, технически у вас там только 1 страница. Но что, если смотреть на них, как на виртуальные пейджи, которые можно разделять логически по контенту? :wink:


(asolntsev) #9

Вот-вот, в этом и беда. С тестов надо начинать, слишком много теоретизировать вредно. Сделайте один пэдж-объект с одни методом getContent() и проверяйте, что div с Id=“content” содержит нужный текст. А дальше будете усложнять по мере необходимости (не факт, что понадобится усложнять).


(James May) #10

Убедили :smile:
Просто, есть 40 страниц. И т.к. локаторы одинаковые, то хотелось все как-то объединить.
Но да, разделение на классы будет оптимальным


(Александр Таранков) #11

Три верхнеуровневых локатора никаким образом не позволят одинаково работать с вложенным в них контентом. С тем же успехом можно считать, все html-страницы одинаковыми, потому что есть title, head, body

Одинаковость страниц надо определять по их использованию и внутренней верстке составляющих компонентов. Возможно тебе повезет, если разработчики молодцы и старались использовать одинаковую верстку страниц и компонентов, то коэффициент переиспользования кода будет выше и тебе не придется для каждой из 40 страниц делать уникальный класс от и до


(James May) #12

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


(Maxim Raychev) #13

Попробуй технику, которую предлагают ребята из Яндекса … во избежание описания одинаковых элементов на страницах, они создали фреймворк. Ну там описание хорошее, так что рекомендую.


(James May) #14

Я ее использую :slight_smile: Дополнительно.