如何单击一个存在两次且名称相同的按钮?

时间:2020-02-07 14:29:16

标签: javascript cypress

我尝试单击一个名为.red的按钮,问题是有两个名称相同的按钮,因此Cypress不知道要使用cy.get('。red')。click()命令单击哪个按钮。 / p>

如何使用下面的代码单击“红色垃圾桶图标”?

<div class="one wide column">
    <div class="ui vertical right floated buttons">
        <a class="ui basic button" role="button" href="/admin/assignments/edit/37">
            <i aria-hidden="true" class="cog icon"></i>
        </a>
        <button class="ui basic button">
            <i aria-hidden="true" class="red trash icon"></i>
        </button>
    </div>
</div>

4 个答案:

答案 0 :(得分:1)

red trash icon是按钮内部的<i>元素,而不是按钮本身。

您应该点击按钮本身:

cy.get('.button').click()

如果您设置的选择器有多个按钮,则可以为其指定特定的类或特定的ID:

<button id="whatever">...

cy.get('#whatever').click()

请注意,将#用于ID而不是点.作为类选择器。

答案 1 :(得分:1)

赛普拉斯.get()命令接受复杂的选择器参数。因此,如果要触发对具有redtrashicon类的元素的点击,可以执行以下操作:

cy.get('.red.trash.icon').click()

答案 2 :(得分:0)

问题是您使用的CSS选择器太宽。

您可以为按钮设置唯一的ID html属性,然后使用cy.get('#your-id')找到它,也可以创建更具体的CSS选择器。

例如,您可以选择带有.red类的最后一个按钮

cy.get('button.red:last-of-type')

或第一行是

cy.get('button.red:first-of-type')

或X元素,例如button.red:nth-of-type(){...}

答案 3 :(得分:0)

按照赛普拉斯文档中的建议,您应该添加自定义data-cy属性,而不要使用通用选择器