gpt4 book ai didi

angularjs - 如何使用cypress输入多个具有相同名称的输入实例

转载 作者:行者123 更新时间:2023-12-03 08:18:59 25 4
gpt4 key购买 nike

我必须使用 cypress 对 angularjs 应用程序进行端到端测试。

我有两个相同输入元素的实例。它们具有相同的 ng-model、class 和 name。我们已经获得了由应用程序动态生成的唯一 ID,每次页面加载或在不同机器上测试时,该 ID 都不能相同。

作为下面的示例,有两个具有相同名称的输入元素,但我需要相同的文本出现在两个输入元素上。当我使用以下命令时,cypress 提示两个同名实例。如何在具有相同名称的两个输入元素上键入相同的文本“Hello world”?

cy.get('input[name=description]').type('Hello World')

最佳答案

一种尝试方法(可能不是最佳的)是

cy.get('input[name=description]').then(els => {
[...els].forEach(el => cy.wrap(el).type('Hello World'));
});

一些笔记,
  • Cypress 有一个 first()命令,所以你可以做
    cy.get('input[name=description]').first().type('Hello World');但我没有命令 second() .
  • [...els]将 Cypress 数组转换为普通数组,因此您可以 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');

    关于angularjs - 如何使用cypress输入多个具有相同名称的输入实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361749/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com