单击赛普拉斯的ng-if值

时间:2018-12-07 07:12:33

标签: cypress

我有一个参数标签,我想单击该标签。

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 :(得分:1)

在AngularJS中,ngIf会在表达式为假时从DOM中完全删除该元素及其子元素,因此使用cy.get().click({force: true})可能会不够。

在此DOM中,<a ui-sref=".parameters" href="#/game/wizard/G_1544166059776_U/edit">是可单击的元素。

要选择它,您将需要一个特定于此选项卡的选择器,因为页面上还有其他带有href的选项卡,并且没有可区分的类或ID。 (AngualrJS将ng-scope类添加到许多元素中。)

有关按属性进行选择及其值的语法,请参见此页面Attribute Contains Prefix Selector [name|=”value”]

我会尝试以下

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

这将等待5秒钟,以便出现可点击元素。如果不这样做,它将失败,并显示一条消息,例如 超时,期望a [href]可见

如果确实失败(例如,如果activewizmenu != 'parameters'从未变为真),那么您仍然可以按照此问题Cypress get href attribute导航到href的目标,

cy.visit('#/game/wizard/G_1544166059776_U/edit')

答案 1 :(得分:0)

.click()与选项{ force: true }一起使用。

这将迫使点击和所有后续事件触发,即使该元素不被视为“可操作的”。

示例:

cy.get(##your element identifier##).click({ force: true }) 

答案 2 :(得分:0)

通过更改属性值。奏效了。

cy.get ('.navigation-tab > .ng-scope > a > .tab')
.invoke('attr','ng-if','activewizmenu = parameters')
cy.contains ('PARAMETERS').should('not.be.visible')
.click({force: true})