首页 文章

赛普拉斯似乎已停滞不前

提问于
浏览
1

我是柏树的新手,喜欢它的架构方式 . 但是,我似乎很早就遇到了一个问题,我正在努力做一件非常简单的事情 .

我的工作流程是:1)访问网站2)输入用户名和密码3)在下一个屏幕上,键入一个数字并按提交,4)在下一个屏幕上,从下拉列表中选择一个值,然后按Enter键 . 5)我到达我网站的登陆页面 .

赛普拉斯完全没问题,直到第4步 . 它似乎在第5步停止 . 测试运行器突然停止并且没有警告或错误,显示“哎呀,没有运行测试 . ”

从这里,当我点击“查看所有测试”按钮时,它会转到跑步工具 . 在那里,我看到有迹象表明事情仍然在后台运行 . 我试着等了10多分钟,但在点击“停止”动作之前没有任何反应 .

我该如何调试?我可以通过任何日志等查看发生了什么吗?

我的网站甚至可能出现问题,但没有任何日志信息,我无法继续进行 . 任何帮助表示赞赏 .

为了提供更多的上下文,我不认为这是一个基于超时的问题,就好像是这样,cypress确实向我报告了这个并停止了 . 然后我增加了超时 .

我的spec文件

describe('My first test', function() {
    it('Visits  home page', function() {
        cy.visit('https://mywebsite.com:5800', {timeout: 400000}, {pageLoadTimeout: 400000}, {defaultCommandTimeout: 400000})


        cy.get('#USERNAME').type('myusername')
        cy.get('#PASSWORD').type('mypassword')

        cy.get('#loginbutton').click()

        cy.get('#SOMELEMENT_WHERE_I_TYPE_A_UNIQUE_NUMBER').type('8056')
        cy.get('#loginbutton').click()

        cy.get('#loginbutton').click()

    })
})

谢谢 .

1 回答

  • 1

    如果在最初打开赛普拉斯时从终端运行DEBUG=cypress:* cypress open,则在运行测试时会打印更多调试日志信息 .

    此外,项目的search the issues总是一个好主意,看看是否还有其他人发生过这种情况 .

    出于某种原因,赛普拉斯自动化进入一种认为您没有spec文件的状态 . 赛普拉斯所做的一切都是determine this is to see if there is a location.hash defined on the main window - >通常所说的 https://localhost:2020/__/#tests/integration/my_spec.js .

    可能这是由于应用程序中的安全机制阻止您的应用程序在iframe中运行(这是赛普拉斯运行所有被测试应用程序的方式) . 也许在你的应用程序代码中它是这样的:

    if (top !== self) {
      top.location.href = self.location.href;
    }
    

    您可以在测试时简单地禁用这些检查,或者在赛普拉斯中,您可以添加到测试文件(或支持文件以使其适用于每个测试文件):

    Cypress.on('window:before:load', (win) => {
      Object.defineProperty(win, 'self', {
        get: () => {
          return window.top
        }
      })
    })
    

相关问题