网址未更改。首次登录后,页面被重定向到T&C页面接受



Login.spec.js

it.only('TC02 - Login with valid data as reseller ', () => {
const id = ut.record(testdata, 2);
cy.login(id.username, id.password);
cy.title().should('equal', 'Compass - Home');
cy.visit('/users');
cy.logout();
});

登录页面.js->来自POM文件夹

checkHome() {
const path = '/license-agreement';
cy.url().then(($url) => {
if($url.includes(path)) {
cy.log("Yes")
} else  {
cy.log("No")
}
})
}

登录后,我调用checkHome方法查看页面是否重定向到主页或协议。如果它在协议页面上,那么我得到接受按钮并点击它。

但当我记录url时,它会输出上一页的url。

此外,如果我把等待放在中间,这个问题就解决了。但我不想使用等待之类的动态解决方案来解决这个

出于测试目的,您应该找到一种方法来避免这种类型的条件测试。

如果不能,则可能需要包含调用checkHome()方法的代码。但是,为了避免使用cy.wait(),如果您的url在主页或协议中是通用的,则可以添加cy.location('pathname').should('include', '/commmon-path/'),或者在两个页面中查询一个通用元素并附加一个should(即cy.get('.common-element-in-home-and-agreement').should('be.visible')(。

要等待url,而不是.then(),请尝试使用带有处理/或的函数的should(),因为应该会重试,直到条件满足

cy.url().should( url => {
// Assert the url is one of the two expected, retry until passes
expect(url).to.satisfy(function(url) { 
return url.includes('/license-agreement') || url.includes('/home')  
})
if (url.includes(path)) {
cy.log("Yes")
} else  {
cy.log("No")
}
})

相关内容

  • 没有找到相关文章

最新更新