Cypress:。查找具有值的元素的每个循环

Cypress:。查找具有值的元素的每个循环,cypress,Cypress,应该有更好的办法,但我找不到。 页面上有许多具有相同选择器的元素。只有value属性不同。控件是动态创建的,因此我无法更精确地将它们固定下来 我正在使用Cypress搜索具有特定值的元素。HTML如下所示: <input type="button" value="Save" data-cy-component="button-button" class="btn form-control btn-info"> 这种方法可行,但似乎很脆弱。如果我的保存按钮不再是第五(或第六)个元素,

应该有更好的办法,但我找不到。 页面上有许多具有相同选择器的元素。只有value属性不同。控件是动态创建的,因此我无法更精确地将它们固定下来

我正在使用Cypress搜索具有特定值的元素。HTML如下所示:

<input type="button" value="Save" data-cy-component="button-button" class="btn form-control btn-info">

这种方法可行,但似乎很脆弱。如果我的保存按钮不再是第五(或第六)个元素,测试将失败。有没有办法用“如果”而不是“应该”来测试它?

我可能不明白你在做什么,如果我有错误,请在评论中纠正我。我相信你要做的是通过它的值来找到一个元素。我写了这篇文章,它成功了。如果你想做的不同,请纠正我

<input type="button" value="Save" data-cy-component="button-button" class="btn form-control btn-info">


cy.get('[value="Save"]').should('exist');
cy.get('[value="Save"]').click();
cy.get('input[value="Save"]').should('exist');
cy.get('input[value="Save"]').click();
根据您下面的评论,您说屏幕上有2个

我创建了这个HTML来测试它。注意一个是隐藏的。我需要知道是什么让你的隐藏或不可见。它们是否位于可能具有唯一ID的不同div中

<input type="button" value="Save" data-cy-component="button-button" class="btn form-control btn-info">
<input style="visibility:hidden" type="button" value="Save" data-cy-component="button-button" class="btn form-control btn-info">


cy.get('[value="Save"][style!="visibility:hidden"]').should('length', 1);
cy.get('[value="Save"][style!="visibility:hidden"]').click();

cy.get('[value=“Save”][style!=“可见性:隐藏”]')。应该('length',1);
cy.get('[value=“Save”][style!=“可见性:隐藏”]')。单击();

你能给我们提供一段HTML吗。您可以使用Cypress根据元素的值选择元素。我知道@Maccurt。这不是问题。我误解了一些东西。我想你可以使用
cy.contains(按钮“保存”)。单击()。无论位置如何,这都会选择“保存”按钮,如果没有“保存”按钮,则会失败。您的方法会出现以下错误:CypressError:超时重试:预计会在元素[1]中找到内容:“保存”,但从未执行过。也许我误解了您的尝试。让我再看看你的问题。我需要看看你的HTML,以便更好地理解。我的想法是你试图找到一个名为“保存”的按钮并点击它。我会回复你的..cy.get('[data cy component=button][value=Save]')。单击()?我更改了答案@麦克科特。谢谢你的帮助。我尝试了这种方法:cy.get('[value=“Save”]')。应该('exist');cy.get('[value=“Save”]')。单击();我得到这个错误:CypressError:cy.click()只能在单个元素上调用。你的主题包含两个元素。如果要连续单击每个元素,请传递{multiple:true}。
cy.get('[data-cy-component=button-button][value=Save]').should('exist');
cy.get('[data-cy-component=button-button][value=Save]').click();
<input type="button" value="Save" data-cy-component="button-button" class="btn form-control btn-info">
<input style="visibility:hidden" type="button" value="Save" data-cy-component="button-button" class="btn form-control btn-info">


cy.get('[value="Save"][style!="visibility:hidden"]').should('length', 1);
cy.get('[value="Save"][style!="visibility:hidden"]').click();