Javascript 如何查找元素、切换它的状态、等待网络响应和检查已更改的类

Javascript 如何查找元素、切换它的状态、等待网络响应和检查已更改的类,javascript,ajax,cypress,Javascript,Ajax,Cypress,我在页面上有元素列表。默认情况下,其中一些是禁用的,一些是启用的。每个元件都有用于启用它的开关。当用户将元素切换到打开位置时,应用程序发送AJAX请求,如果响应正常,元素将数据状态属性从关闭更改为打开 我想在Cypress测试中检查一下 cy.server(); cy.route('POST', '**/shop/method_payment/').as('methodAdd'); cy.get('[data-cy="payment-method"][data-cy-status="off"]

我在页面上有元素列表。默认情况下,其中一些是禁用的,一些是启用的。每个元件都有用于启用它的开关。当用户将元素切换到打开位置时,应用程序发送AJAX请求,如果响应正常,元素将
数据状态
属性从
关闭
更改为
打开

我想在Cypress测试中检查一下

cy.server();
cy.route('POST', '**/shop/method_payment/').as('methodAdd');

cy.get('[data-cy="payment-method"][data-cy-status="off"]').first().as('methodEl');
cy.get('@methodEl').find('[data-cy="pm-switch"]').click();
cy.wait('@methodAdd');
cy.get('@methodEl').should('have.attr', 'data-cy-status', 'on');
但是

cy.get('[data cy=“payment method”][data cy status=“off”]').first().as('methodEl')

将选择器保存在alias中,而不是DOM元素中。当我在AJAX响应之后用

cy.get('@methodEl')。应该('have.attr','data cy status','on')


cypress选择下一个禁用的元素,而不是启用的元素。什么是正确的方法呢?

找到了解决方案。在init上添加了额外的不可更改选择器
数据cy状态

cy.server();
cy.route('POST', '**/shop/method_payment/').as('methodAdd');

cy.get('[data-cy="payment-method"][data-cy-status-on-init="off"]').first().as('methodEl');
cy.get('@methodEl').find('[data-cy="pm-switch"]').click();
cy.wait('@methodAdd');
cy.get('@methodEl').should('have.attr', 'data-cy-status', 'on');