Нажмите на значение нг-если из кипариса
У меня есть вкладка параметров, и я хочу щелкнуть эту вкладку.
https://s tackru.com/images/562f5d5376949c53dd2b03f3ede36256472ccbb7.png
Ниже приведен 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>
4 ответа
В 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 get атрибут href,
cy.visit('#/game/wizard/G_1544166059776_U/edit')
Изменяя значение атрибута. Это сработало.
cy.get ('.navigation-tab > .ng-scope > a > .tab')
.invoke('attr','ng-if','activewizmenu = parameters')
cy.contains ('PARAMETERS').should('not.be.visible')
.click({force: true})
Использование .click()
с возможностью { force: true }
,
Это приведет к срабатыванию щелчка и всех последующих событий, даже если элемент не считается "активным".
Пример:
cy.get(##your element identifier##).click({ force: true })
это мне очень помогло. Я использовал:
cy.get('a').invoke('removeAttr', 'target').click();