Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 04.01.2019
Сообщений: 27
1

Авторизация selenium под разными ролями при page object

24.07.2020, 17:59. Просмотров 2769. Ответов 4

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

Java
1
2
3
4
5
public AdminHomePage auth(String usrLogin, String usrPassword) {
  setLogin(usrLogin);
  setPassw(usrPassword);
  return new AdminHomePage(driver);
}
где AdminHomePage - класс, описывающий домашнюю страницу пользователя с ролью Admin. Но есть ещё пользователь, например, Manager. Процедура авторизации у него точно такая же, но он должен попадать на страницу ManagerHomePage
Оба класса, и AdminHomePage и ManagerHomePage предка Page (имеют некоторые общие элементы, методы взаимодействия с ними), но конкретные реализации сильно отличаются.

Как не плодить кучу одинаковых методов authAdmin, authManager...? Специально не пишу свою реализацию, т.к. есть серьёзные сомнения в её правильности, а главное "невелосипедности".

Заранее благодарю за ответы.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2020, 17:59
Ответы с готовыми решениями:

Авторизация с разными ролями
Добрый день, столкнулся с проблемой. Есть бд mssql. Есть формы для пользователей. Проблема с...

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

Авторизация с разными ролями
Приветствую, нужно сделать авторизацию для различных групп пользователей, в моем случае :...

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

4
1 / 1 / 0
Регистрация: 04.01.2019
Сообщений: 27
27.07.2020, 14:22  [ТС] 2
Ну ОК. Попробую абстрагироваться от селениума.
Есть несколько классов: A, B, C, которые наследуются от P.
Есть метод, который принимает Enum, значения которого соответствуют одному из классов. Нужно, чтобы возвращаемым типом должен быть объект конкретного класса: или A, или B, или C.

Сейчас решение в виде:
Java
1
2
3
4
5
6
7
8
9
10
11
public T<extends P> auth(Roles role) {
  T homeP = null;
  switch(role) {
    case RoleA:
      homeP = (T) new A();
      break;
    case RoleB:
//.......................
  }
  return homeP;
}
Мне приходится везде кастовать значения - и в самом методе и в вызываемом коде. И хотя всё работает, и, даже сказать, правильно, меня терзают смутные сомнения, что это хорошая реализация.

Вот собственно и вопрос, как правильно-то?
Ещё раз извиняюсь за "нубство" не местные мы, из тестировщиков, "не по умыслу, а волея свзяавших нас обстоятельств..."
Ну или хотя бы где посмотреть конкретную реализацию или почитать статью на эту тему. Нагуглить не выходит - первые страниц пять вообще не о том. Или я не так спрашиваю
0
2875 / 2457 / 754
Регистрация: 05.07.2013
Сообщений: 11,859
27.07.2020, 15:04 3
Лучший ответ Сообщение было отмечено KMA7 как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) throws XMLStreamException, IOException {
        A p = create(Type.A);
    }
 
    private static <T extends P> T create(Type t) {
        if (t == Type.A) {
            return (T) new A();
        } else {
            return (T) new B();
        }
    }
ну как-то так и пиши, че не устраивает то?

Добавлено через 4 минуты
можно в параметре Class<T> clazz передавать - немного больше type safety будет
0
1 / 1 / 0
Регистрация: 04.01.2019
Сообщений: 27
27.07.2020, 17:18  [ТС] 4
Ну так и пишу , но как-то это явное кастование смущало, ну раз норм, то нужно просто перестать переживать по этому поводу. Всё время кажется, что чуть-чуть недоучил/недопонял, и как результат всё делаешь не так)) Я честно долго терпел - но это уже третий проект где приходится подобную ролевую модель применять. Буду спать спокойно
0
1815 / 1426 / 357
Регистрация: 17.02.2014
Сообщений: 7,310
28.07.2020, 11:05 5
Цитата Сообщение от KMA7 Посмотреть сообщение
хотя бы где посмотреть
https://www.codejava.net/collections-tutorials
https://www.amazon.com/gp/product/0596527756/ - тут очень подробно))
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2020, 11:05

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

Авторизация ролями
Люди помогите!Вообще не могу разобраться с принципом работы!Как реализовать Роли? Аутентификация...

Модуль page, selenium
Здравствуйте форумчане. Пришел с вопросом. В ступоре, так как не работает код из официального...

"stale element reference: element is not attached to the page document" при парсинге выпадающего меню с selenium
Вроде, исходя из логики всё учёл, всё верно... Но только первую итерацию нормально пропускает, но...

Alert авторизация FireFox Selenium
Второй день бьюсь WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, 10)); ...

Unknown cause of error while i'm calling vb Com object method from asp page
Unknown cause of error while i'm calling vb Com object method from asp page.Something like this:...

Single Page Application авторизация
Как сделать авторизацию в single page application, отдельный HTML с формой(POST запрос) или с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.