2

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

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

赛普拉斯在第 4 步之前工作得很好)。它似乎在第 5 步停止。测试运行程序突然停止,没有警告或错误,显示“哎呀,没有要运行的测试”。

从这里,当我单击“查看所有测试”按钮时,它会将我带到运行工具。在那里,我看到某些东西仍在后台运行的迹象。我尝试等待超过 10 分钟,但在单击“停止”操作之前没有任何反应。

我该如何调试?我可以通过任何日志等查看正在发生的事情吗?

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

为了提供更多背景信息,我不认为这是一个基于超时的问题,就好像情况一样,赛普拉斯确实向我报告了这一点并停止了。然后我增加了超时。

我的规格文件

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()

    })
})

谢谢。

4

2 回答 2

1

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

此外,搜索项目的问题以查看是否有其他人发生过这种情况总是一个好主意。

出于某种原因,赛普拉斯自动化进入了它认为您没有规范文件的状态。赛普拉斯所做的所有决定都是查看主窗口上是否有一个已location.hash定义的-> 它通常显示的位置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
    }
  })
})
于 2018-02-08T21:25:14.583 回答
0

我遇到过同样的问题。通常这与页面移出父页面有关,可以通过调用属性并将其更改为当前页面来解决。

cy.get('.approved-content .no-auto-submit').invoke('attr', 'target', '_self');
于 2020-08-28T10:15:31.553 回答