Javascript 如何查找元素、切换它的状态、等待网络响应和检查已更改的类
我在页面上有元素列表。默认情况下,其中一些是禁用的,一些是启用的。每个元件都有用于启用它的开关。当用户将元素切换到打开位置时,应用程序发送AJAX请求,如果响应正常,元素将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"]
数据状态
属性从关闭
更改为打开
我想在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');