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

Как оптимальный образом сделать навигацию по сложному меню

java
webdriver
Теги: #<Tag:0x00007f7b68ee8730> #<Tag:0x00007f7b68ee8550>

#1

Здравствуйте!

Имею такое меню:

Надо как-то ходить по нему. В предыдущем посте я показал кусок кода, который мне предлагают заюзать перемещаясь по меню

Navigation navigation = new Navigation();
navigation.activateSubsystem("Управление НФА");
navigation.activateTab("Формуляры");
navigation.expandNode("Формуляры");
navigation.expandNode("Поступление НФА");
navigation.selectNode("Приходный ордер на приемку материальных ценностей (нефинансовых активов) (ф.0504207)");

В самом тесте перед открытием тестируемой формы писать такую лабуду.

У меня же идея, сделать метод, которому передается уже конечный пункт для открытия:

navigation.openFormular(MenuNodes.COOPERATION_SCHEME);

я этот метод реализовал, но он получился жутким монстром, с ифами и константами:

public void openFormular(String node) {
    if (node.equals(MenuNodes.NSI_REGISTER_OF_APPLICATION_FOR_CHANGE_THE_CONSOLIDATED_REGISTRY) ||
            node.equals(MenuNodes.NSI_APPROVE_REQUESTS)||
            node.equals(MenuNodes.NSI_CONFIRM_REQUESTS)||
            node.equals(MenuNodes.NSI_REGISTER_OF_SOLUTIONS_TO_CHANGE_THE_CONSOLIDATED_REGISTRY)||
            node.equals(MenuNodes.NSI_APPROVE_SOLUTIONS)||
            node.equals(MenuNodes.NSI_CONFIRM_SOLUTIONS)){
        openFormularTab();
        if (!layers[0]) {
            getExpandOverOtherExpand(MenuNodes.NSI_MANAGEMENT_NSI, MenuNodes.NSI_SUMMARY_REGISTER).click();
        }
        getNode(node).click();

    }
    if (node.equals(MenuNodes.NSI_SUMMARY_REGISTER)){
        openFormularTab();
        if (!layers[0]) {
            getExpandOverOtherExpand(MenuNodes.DIRECTORIES, MenuNodes.NSI_SUMMARY_REGISTER).click();
        }
        getNode(node).click();
    }

Может есть какой-то подход к таким навигациям по вложенным меню?


(Eugene Moskalenko) #2

при переходе на такой таб, навигация уже развернуто? или надо еще разворачивать?


#3

в табе “Формуляры” - менюшка свернута
в табе “Рабочие места” - раскрыта :slight_smile:


#4

Рядом есть поле для ввода: в него вбиваешь искомый пункт и он отображается
Но проблем в том, что конечные пункты имеют не уникальные имена, есть как и узлы, так и подузлы с одинаковыми именами

На картинке видно, что слева в инпут search вбито “Сводный реестр” (серенький шрифт слоабо заметный)
И по результату поиска выдается такая картина:

Подузел от конечного узла еще можно отличить по классу, но бывают именно и одинаковые конечные узлы


#5

есть идеи? )

я думаю, может как-то открывать эти формы минуя меню…
инетересно, можно ли так сделать


(5am) #6

прямые урлы - как вариант, если нет цели проверить навигацию по меню (это можно сделать и отдельным “большим” тестом)


#7

При нажатии на конечный пункт - открывается портлет в центре страницы, УРЛ не меняется, такой же и остается


(5am) #8

может тогда какимнить post/get’ом ? в network’е браузера ведь отправляются какие то данные для открытия формы, при клике на пункт меню.
правда это уже выглядит более костыльно чем navigate на конкретный урл…


#9

ага


(Goshko Nazar) #10

я думаю, может как-то открывать эти формы минуя меню…

А вот так деллать не стоит. А если какой то из пунктов пропадет в меню, и по адресу будет а в меню нет.
Вы должны повторять действия пользователя.
Мне кажется удобно сделать класс навигаюцию, где будет метод go_to принимать имя раздела, и возвращать нужную страницу (пейдж-обжект открытой страницы).
В плане реализации, ну не знаю.


#11

я так сделал) но вот реализация получалась немного лютой…
надо думать)


(Goshko Nazar) #12

Не совсем понимаю что там могло выйти лютым) Обычный поиск по массиву текста, и если введеного еткста нет - исключение, что бы дать понять что тест сломан.