单击cypress中的ng if值

单击cypress中的ng if值,cypress,Cypress,我有一个参数选项卡,我想单击该选项卡 下面是相同的HTML。由于ngIf:activewizmenu!='参数“ <div class="navigation-tab"> <!-- ngIf: activewizmenu == 'parameters' --> <!-- ngIf: activewizmenu != 'parameters' --> <div ng-if="activewizmenu !=

我有一个参数选项卡,我想单击该选项卡

下面是相同的HTML。由于
ngIf:activewizmenu!='参数“

<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>

使用
。单击()
并选择
{force:true}

这将强制触发单击和所有后续事件,即使该元素不被视为“可操作”

例如:

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

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

在这个DOM中,
用于按属性及其值进行选择的语法

我想试试下面的方法

cy.get(“a[href |='#/game/wizard/G_1544166059776_/edit']”)
.should('be.visible')
。单击()
这将等待5秒钟,使可单击元素出现。如果不这样做,它将失败,并显示一条消息,如超时,希望[href]可见

如果它确实失败(例如如果
activewizmenu!=“parameters”
从未变为true),那么您仍然可以根据此问题导航到href的目标


通过更改属性值。成功了

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

如果我写这篇文章,那么将找到5个元素。我收到错误“CypresError:cy.click()只能对单个元素调用。您的主题包含5个元素。如果要连续单击每个元素,请传递{multiple:true}。”我将
导航选项卡添加到我的答案中,作为示例。您应该将要单击的正确元素传递给
get()
函数。这里重要的是将
{force:true}
添加到单击处理程序中。是的,虽然我没有得到错误,但仍然无法单击。我感到困惑。您是否正在尝试单击应用程序当前状态下不应单击的元素?我需要更多信息。你能给我们看一下cypress密码吗?您使用的是看起来像的angular JS。我很困惑,您的元素是否由于条件而没有显示在DOM中。如果你的元素真的出现在屏幕上,我应该能够帮助你。此条件是否激活WizMenu!='参数'true当您运行测试时,我可以通过更改属性值来执行此操作:cy.get('.navigation tab>.ng scope>a>.tab')。invoke('attr','ng-if','activewizmenu=parameters')cy.contains('parameters')。应该('not.be.visible')。单击({force:true})干得好。如果你把它作为答案贴出来,我会投赞成票。
cy.get ('.navigation-tab > .ng-scope > a > .tab')
.invoke('attr','ng-if','activewizmenu = parameters')
cy.contains ('PARAMETERS').should('not.be.visible')
.click({force: true})