2014-12-27 3 views
-2

У меня есть простой вопрос. Я уверен, что многие из нас, возможно, попали в ту же ситуацию. Я использую шаблон объекта страницы. Ниже приведены шаги, которые я выполняю в навигации.selenium Page factory handle различные элементы для одной и той же страницы для разных пользователей

  1. Войдите в свое приложение как один из типов пользователей.
  2. Нажмите ссылку, чтобы перейти на страницу формы.
  3. На странице формы, заполняет поля и отправить
  4. Выхода

3) страница объекта формы показывает некоторые различные поля ввода в зависимости от типа пользователя, который мне нужно взаимодействовать с. Итак, как я обрабатываю его в одном и том же объекте страницы. Кто-нибудь попал в ту же ситуацию и нашел достойный способ сделать это?

+0

Будут некоторые типы клиентов, не так ли? Например, Золотая привилегия, Серебряная привилегия, Бронза ... и так далее. – Sighil

+0

Да, пользователи (или клиенты) принадлежат к разным группам, которые их различают. –

ответ

0

Я знаю, что это простой скрипт автоматизации не проект Java, где мы должны использовать все OOPS концепции, но все-таки я бы следующим:

  1. Создать родительский класс страницы, содержащий общие WebElements и методы ,

  2. Создайте дочерние классы с элементами и методами, специфичными для этого клиента.

  3. В тесте передайте параметр, указывающий тип клиента и вызывающий соответствующий дочерний класс.

Если вы не хотите этого наследования, вы также можете попробовать следующее.

  1. Создать класс страницы с элементами для всех типов клиентов.

  2. Создайте общие методы, которые могут принимать параметр customerType и выполнять операции, например, если clientType == 1 делает эти операции еще.

Другое решение, появившееся у меня в голове, предполагая, что все поля для конкретного клиента являются обязательными, заключается в следующем.

  1. Создать общий класс для всех элементов.

  2. Создайте общий метод в классе страницы, который следует за условием, если этот элемент присутствует, а затем введите значение.

+0

Мне нравится часть наследования лучше. Но у меня проблема. Допустим, если в будущем будет 25 групп (или больше), я напишу 25 под-классов для каждой группы, которую я боюсь;). Я думал, если мы можем динамически определять элементы для этой конкретной страницы. –

+0

Я не знаю, как обеспечить динамические значения для локаторов элементов. Но я добавил еще одно решение. – Sighil

0

Если вы понимаете концепцию объектной модели страницы, то эти вопросы будут более понятны вам. Да, наследование здесь является большим фактором. Я предлагаю вам прочитать this, чтобы увидеть, как должна работать реальная модель объекта. И решение вопроса №3 так же просто, как отображение пользовательского интерфейса. Что-то вроде

@FindBy(how = How.NAME, using = "q") 
private WebElement searchBox; 

для каждого элемента или аналогичной реализации.

Для полного объекта страницы вы должны указать все elementsне в зависимости от пользователя. Причина в том, что каждый раз, когда вы вызываете этот класс, он будет создан и все отображенные элементы. Нет необходимости в динамически загружать элементы Если какие-либо элементы не используются или скрыты на странице, они будут доступны, и вы их не будете использовать в любом случае

+0

Я согласен с вами в том, что при создании объектов страницы он не должен зависеть от пользователей, но я думаю, что, вероятно, мне все равно нужно проверить его в моей функции fillform, если элемент отображается или нет, иначе я получу исключение элемента, не найденное для элементы, присутствующие для одного пользователя, но не для другого. –

+0

Вы полностью пропустили мою мысль! Скажем, пользователь 'manager' должен видеть' filedA' и 'fieldB', а пользователь' employee' должен видеть только 'fieldA'. Вам все равно нужно будет отображать как 'filedA', так и' filedB'. Если вы входите в систему как менеджер и используете оба поля, вы не получите никакого исключения, если вы входите в систему как «сотрудник», если попытаетесь получить доступ к 'filedA', вы получите исключение. Вы не нуждаетесь в дополнительной проверке здесь. – Saifur

Смежные вопросы