当我从普通浏览器登录时,使用以下网址成功登录:http://neelesh.zapto.org:8084/EnrolMe/indHome.html
但是当我从赛普拉斯运行脚本时,未附加目录位置,并且登录后的新URL格式为:http://neelesh.zapto.org:8084/__/indHome.html
我尝试用
设置cypress.json{
"chromeWebSecurity": false,
"modifyObstructiveCode" : false
}
我尝试过铬/电子(头部和头部)。
下面是我的代码段:
describe('My First Test Suite', function() {
it('My First test case', function() {
cy.visit("http://neelesh.zapto.org:8084/EnrolMe")
cy.get("#login").click()
cy.get("input[value='Individual']").click()
cy.get("#username").type('1234567890')
cy.get("#pwd").type('0646')
Cypress.Cookies.debug(true)
cy.clearCookies()
cy.get("#login").click()
cy.wait(6000)
})
})
当我从赛普拉斯运行脚本时,未附加目录位置,并且登录后的新URL格式为:http://neelesh.zapto.org:8084/__/indHome.html
应将其重定向为:http://neelesh.zapto.org:8084/EnrolMe/indHome.html
有人可以帮我吗?
答案 0 :(得分:0)
这听起来像是“ Frame Busting”的问题。 Cypress GitHub Issue #992的相关讨论可能会有所帮助。
您的应用程序代码可能包含有问题的帧清除代码,如下所示:
if (window.top !== window.self) {
window.top.location.href = window.self.location.href;
}
您可以通过将应用程序代码对window.self
的引用从应用程序窗口更改为Cypress Test Runner窗口(window.top
)来解决此问题。
Cypress emits a series of events,因为它在您的浏览器中运行。您可以使用发出的window:before:load
application event来确保已完成操作,然后再尝试登录。
// cypress/support/index.js
Cypress.on('window:before:load', (win) => {
Object.defineProperty(win, 'self', {
get: () => {
return window.top
}
})
})