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")
}
})