Javascript 如何使用CYPRESS传递登录表单?

Javascript 如何使用CYPRESS传递登录表单?,javascript,cypress,Javascript,Cypress,我在一个没有身份验证的站点上运行CYPRESS,没有任何顾虑 但在内联网上,我无法识别自己的身份。我必须先登录 这是我的密码: description('home',()=>{ it('家庭可访问',()=>{ cy.visit(“/”) }) //我们填写登录表 它('用户字段',()=>{ cy.get('输入#用户') .type('login') }) 它('用户通行证',()=>{ cy.get('input#pass') .type('mot de passe') })

我在一个没有身份验证的站点上运行CYPRESS,没有任何顾虑

但在内联网上,我无法识别自己的身份。我必须先登录

这是我的密码:

description('home',()=>{
it('家庭可访问',()=>{
cy.visit(“/”)
})
//我们填写登录表
它('用户字段',()=>{
cy.get('输入#用户')
.type('login')
})    
它('用户通行证',()=>{
cy.get('input#pass')
.type('mot de passe')
})    
它('检查同意',()=>{
cy.get('input#permalogin')
。单击({force:true})
})  
它('提交',()=>{
cy.get('input.btn.btn primary')
。单击()
})
//表单已提交,我们可以访问一个页面
它('autre page!!',()=>{
cy.visit('/luniversite/page-2',{timeout:30000})
})
//我们检查页面的标题,我们应该在第2页
它('第2页标题',()=>{
cy.title()应('eq',第2页:内部网)
})
CYPRESS和CYPRESS视频显示我在身份验证页面上被阻止。
页面标题上的测试不正确,我无法访问第2页。我将停留在第一页进行登录。

第一件事是:这似乎是一个测试,但您指定了多个it()函数,这将它拆分为多个测试,这不是您想要的。您将希望按照以下方式重新构造测试:

describe("home", () => {
  it("home accessible", () => {
    cy.visit("/");
    //We fill the login FORM
    cy.get("input#user").type("login");
    cy.get("input#pass").type("mot de passe");
    cy.get("input#permalogin").click({ force: true });    
    cy.get("input.btn.btn-primary").click();
    cy.visit("/luniversite/page-2", { timeout: 30000 });
    cy.title().should("eq", "page 2: INTRANET");
  });
});
这样一来,如果没有更多细节,就很难知道您的应用程序在做什么:

1/当手动执行时,您的应用程序是否使用提供的凭据进行了正确的身份验证?是否存在控制台错误?您是否确定正在使用的元素定位器实际以您期望的方式与元素交互

2/您的测试是否试图在身份验证完成之前导航到
/luniversite/page-2
?如果是,您可能希望使用截获您的身份验证呼叫并等待其完成:

// get your authentication POST request from network tab of devtools and use that in the cy.intercept call    
cy.intercept('POST', '/yourAuthenticationCallUrl').as("@authenticationCall")
// YOUR LOGIN STEPS HERE
cy.wait("@authenticationCall") //waits for the authentication call to complete before moving to the next step
cy.visit("/luniversite/page-2", { timeout: 30000 }); 

第一件事:这似乎是一个测试,但您正在指定多个it()函数,这将它分解为多个测试,这不是您想要的。您将希望像这样重新构造测试:

describe("home", () => {
  it("home accessible", () => {
    cy.visit("/");
    //We fill the login FORM
    cy.get("input#user").type("login");
    cy.get("input#pass").type("mot de passe");
    cy.get("input#permalogin").click({ force: true });    
    cy.get("input.btn.btn-primary").click();
    cy.visit("/luniversite/page-2", { timeout: 30000 });
    cy.title().should("eq", "page 2: INTRANET");
  });
});
这样一来,如果没有更多细节,就很难知道您的应用程序在做什么:

1/当手动执行时,您的应用程序是否使用提供的凭据进行了正确的身份验证?是否存在控制台错误?您是否确定正在使用的元素定位器实际以您期望的方式与元素交互

2/您的测试是否试图在身份验证完成之前导航到
/luniversite/page-2
?如果是,您可能希望使用截获您的身份验证呼叫并等待其完成:

// get your authentication POST request from network tab of devtools and use that in the cy.intercept call    
cy.intercept('POST', '/yourAuthenticationCallUrl').as("@authenticationCall")
// YOUR LOGIN STEPS HERE
cy.wait("@authenticationCall") //waits for the authentication call to complete before moving to the next step
cy.visit("/luniversite/page-2", { timeout: 30000 }); 

好的,谢谢,我要试试。好的,谢谢,我要试试。