Нажмите на значение нг-если из кипариса - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть вкладка параметров, и я хочу щелкнуть по этой вкладке.

Schreenshot of parameters tab

Ниже приведен HTML для того же.Пожалуйста, помогите Я не могу нажать на вкладку из-за ngIf: activewizmenu != 'parameters'.

<div class="navigation-tab">
    <!-- ngIf: activewizmenu == 'parameters' -->
        <!-- ngIf: activewizmenu != 'parameters' -->
            <div ng-if="activewizmenu != 'parameters'" class="ng-scope">
                <!-- ngIf: hasCreatedTask() -->
                    <div ng-if="hasCreatedTask()" class="ng-scope" style="">
                        <a ui-sref=".parameters" href="#/game/wizard/G_1544166059776_U/edit">
                            <div class="tab">
                                <img src="images/gamification/panel_icons/icone_mw_gametab_0018_Oggetto-vettoriale-avanzato-copia-9.679f1df3.png" alt="parameters">
                                <div class="heading ng-binding">PARAMETERS</div>
                                <span class="color-purple ng-binding">Set parameters</span>
                            </div>
                        </a>
                    </div>
                <!-- end ngIf: hasCreatedTask() -->
            <!-- ngIf: !hasCreatedTask() -->
        </div>
    <!-- end ngIf: activewizmenu != 'parameters' -->
</div>

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

В AngularJS ngIf полностью удалит элемент и его потомков из DOM, когда выражение ложно, поэтому использование cy.get().click({force: true}) может оказаться недостаточным.

В этом DOM, <a ui-sref=".parameters" href="#/game/wizard/G_1544166059776_U/edit"> - этокликабельный элемент.

Чтобы выбрать его, вам понадобится селектор, который специфичен для этой вкладки, поскольку на странице есть и другие вкладки, также имеющие href, и нет отличительных классов или идентификаторов.(AngualrJS добавляет класс ng-scope ко многим элементам).

См. Эту страницу Атрибут содержит префиксный селектор [name | = ”value”] для синтаксиса выбора по атрибуту и ​​его значения.

Я бы попробовал следующее

cy.get("a[href|='#/game/wizard/G_1544166059776_U/edit']")
  .should('be.visible')
  .click()

Это будет ждать 5 секунд, пока не появится активируемый элемент.Если этого не произойдет, произойдет сбой с сообщением типа истекло время ожидания, ожидая, что [href] станет видимым .

Если произойдет сбой (длянапример, если activewizmenu != 'parameters' никогда не становится истинным), то вы все равно можете перейти к цели href согласно этому вопросу Cypress получить атрибут href ,

cy.visit('#/game/wizard/G_1544166059776_U/edit')
0 голосов
/ 18 декабря 2018

Путем изменения значения атрибута.Это сработало.

cy.get ('.navigation-tab > .ng-scope > a > .tab')
.invoke('attr','ng-if','activewizmenu = parameters')
cy.contains ('PARAMETERS').should('not.be.visible')
.click({force: true})
0 голосов
/ 07 декабря 2018

Используйте .click() с параметром { force: true }.

. Это приведет к срабатыванию щелчка и всех последующих событий, даже если элемент не считается «активным».

Пример:

cy.get(##your element identifier##).click({ force: true }) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...