首页 > 解决方案 > 柏树拦截

问题描述

我是自动化新手,并且在柏树拦截方法中遇到问题。我必须实现以下目标:

1- 访问:https : //opensource-demo.orangehrmlive.com 2- 输入登录凭据 3- 通过拦截方法单击 l0gin 按钮“我必须验证输入的用户名”。以下是我的代码

describe("cypressAssignment", ()=>{
it('Login a user and validate his name via intercept', ()=>{

    cy.intercept('POST', '/auth/login', (req) => {
        expect(req.body).to.include('Admin')
    }).as('username')
      
    cy.visit('https://opensource-demo.orangehrmlive.com')

    
    cy.get('form').within(($form)=>{
        cy.get('#divUsername').type('Admin')
        cy.get('#divPassword').type('admin123')

        cy.get('#btnLogin').click()

    })
  cy.wait('@username').its('response.body').should('to.have.property', 'name').and('include', 'Admin')

   

    cy.url().should('include','dashboard')
   

})

标签: javascriptautomationcypressintercept

解决方案


我会去做这样的事情。)根据评论部分中的其他信息进行了更新。)

it('SO Answer', () => {
    cy
      .visit('/');

    cy
      .intercept('POST', '**/auth/validateCredentials')
      .as('loginRoute');

    cy
      .get('#txtUsername')
      .type('Admin');

    cy
      .get('#txtPassword')
      .type('admin123');

    cy
      .get('#btnLogin')
      .click();

    cy
      .wait('@loginRoute')
      .its('request.body')
      .should('include', 'txtUsername=Admin');
});

要在 Test Runner 中查看整个测试用例:

在此处输入图像描述

该应用程序在服务器端呈现 HTML,因此对登录操作的响应是 302 重定向/index.php/dashboard并在响应中发送完整的 HTML,因此在这种情况下您无法检查响应中的任何用户名。


推荐阅读