Каков наилучший способ использования объектной модели страницы с Page Fatcory? - PullRequest
0 голосов
/ 15 октября 2019

В настоящее время у меня есть задача по созданию инфраструктуры автоматизации на Java, и я поспорил с архитектором по поводу дизайна теста. Вот как выглядит мой текущий фреймворк: Maven, POM и PageFactory.

Project - Пакет утилит - содержит все классы утилит- Локаторы - содержит только веб-элементы сайта (Page Factory)- Actions - содержит щелчки, sendkeys и другие действия для локаторов- Step - Вызов и утверждение метода класса Action (определение шага огурца)- Custome Listeners - Класс слушателя

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

Ответы [ 3 ]

0 голосов
/ 15 октября 2019

Хотя это серьезный вопрос, я бы порекомендовал использовать подход вашего архитектора программного обеспечения и удалить классы Action. Я не уверен, каковы намерения для классов Step, поэтому я бы тоже удалил их.

  • Project
    • Утилиты
    • PageObjects
    • CustomListeners
    • WebDriver

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

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

0 голосов
/ 15 октября 2019

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

Вы можете использовать объектную модель страницы двумя способами: -

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

By demo_get_text=By.className("xyz");

- с фабрикой страниц: (выполняется быстрее сверху)

@FindBy(className="xyz")  WebElement demo_get_text;
0 голосов
/ 15 октября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...