我必须使用cypress结束对angularjs应用程序的测试。
我有两个相同输入元素的实例。它们具有相同的ng模型,类和名称。我们有一个由应用程序动态生成的唯一ID,每次加载页面时都不一样,或者在不同的机器上测试它。
作为下面的示例,有两个具有相同名称的输入元素,但我需要在输入元素上显示相同的文本。当我使用以下命令时,cypress抱怨两个同名的实例。如何输入相同的文字' Hello world'在两个具有相同名称的输入元素上?
/// <reference path="../typings.d.ts" />
答案 0 :(得分:3)
尝试(可能不是最佳)的一种方法是
cy.get('input[name=description]').then(els => {
[...els].forEach(el => cy.wrap(el).type('Hello World'));
});
一些说明,
赛普拉斯有first()
命令,所以你可以做
cy.get('input[name=description]').first().type('Hello World');
但我没有命令second()
。
[...els]
将赛普拉斯阵列转换为普通数组,因此您可以forEach()
。
eq()
命令 如果这看起来太不合适了,请将以下自定义命令添加到 \cypress\support\command.js
Cypress.Commands.add('nth', { prevSubject: 'element' }, (els, index) => {
return cy.wrap([...els][index])
})
来自Jennifer Shehane的评论,可以通过
更简单地做到这一点cy.get('input[name=description]').eq(0).type('Hello World');
cy.get('input[name=description]').eq(1).type('Hello World');
答案 1 :(得分:0)
您可以选择输入的任何唯一标识符。它可以是id,占位符等。