赛普拉斯拦截
Cypress intercept
我是自动化方面的新手,在 cypress 拦截方法方面遇到了问题。我必须实现以下目标:
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')
})
我会选择这样的东西。 )根据评论部分的附加信息更新。)
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');
});
要在测试运行程序中查看整个测试用例:
应用程序在服务器端呈现 HTML,因此对登录操作的响应是到 /index.php/dashboard
的 302 重定向以及响应中发送的完整 HTML,因此您在这种情况下无法检查响应中的任何用户名。
这是我在您回复@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()
})
})
我是自动化方面的新手,在 cypress 拦截方法方面遇到了问题。我必须实现以下目标:
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')
})
我会选择这样的东西。 )根据评论部分的附加信息更新。)
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');
});
要在测试运行程序中查看整个测试用例:
应用程序在服务器端呈现 HTML,因此对登录操作的响应是到 /index.php/dashboard
的 302 重定向以及响应中发送的完整 HTML,因此您在这种情况下无法检查响应中的任何用户名。
这是我在您回复@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()
})
})