从赛普拉斯测试运行器运行时,目录路径不正确

时间:2019-11-03 06:33:05

标签: cypress

当我从普通浏览器登录时,使用以下网址成功登录: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

有人可以帮我吗?

1 个答案:

答案 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
    }
  })
})