【问题标题】:Cypress intercept柏树拦截
【发布时间】:2021-11-23 00:15:27
【问题描述】:

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

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')
   

})

【问题讨论】:

    标签: javascript automation cypress intercept


    【解决方案1】:

    我会选择这样的东西。 )根据评论部分中的其他信息进行了更新。)

    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,因此在这种情况下您无法检查响应中的任何用户名.

    【讨论】:

    • 感谢您的友好回复。其实我必须做简单的事情。 1-访问此网址:opensource-demo.orangehrmlive.com 2-输入登录凭据 3-通过拦截单击登录按钮“验证用户名”。
    • @Hassan 我已经更新了我的答案。如果您只是复制并粘贴它,它会起作用,尽管我不建议这样做。尝试了解应用程序的工作原理以及赛普拉斯的工作原理。
    • 你是冠军先生 :) 非常感谢
    【解决方案2】:

    这是我在您回复@pavelsaman 后所做的。现在我得到了如何使用拦截的想法:

    describe("cypressAssignment", ()=>{
    it('Login a user and validate his name via intercept', ()=>{
    
        cy.intercept('POST','**/auth/validateCredentials', (request) => { expect(request.body).to.include('txtUsername=Admin')
        })
    
        cy.visit('/')
        
        cy.get('form').within(($form)=>{
            cy.get('#txtUsername').type('Admin')
            cy.get('#txtPassword').type('admin123')
            cy.get('#btnLogin').click()
    
        })
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2013-06-25
      • 2018-08-09
      相关资源
      最近更新 更多