我有一个参数标签,我想单击该标签。
以下是相同的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>
答案 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})