我是柏树的新手,喜欢它的架构方式。但是,我似乎很早就遇到了一个问题,我想做一件非常简单的事情。
我的工作流程是: 1)访问该网站 2)输入用户名和密码 3)在下一个屏幕上,键入一个数字并按提交, 4)在下一个屏幕上,从下拉列表中选择一个值,然后按Enter键。 5)我到了我网站的登陆页面。
赛普拉斯完全没问题,直到第4步)。它似乎在第5步停止。测试运行器突然停止并且没有警告或错误,显示 "哎呀,没有测试可以运行。"
从这里,当我点击"查看所有测试"按钮,它带我到跑步工具。在那里,我看到有迹象表明事情仍然在后台运行。我试着等了10多分钟但是没有任何反应,直到我点击"停止"动作。
我该如何调试?我可以通过任何日志等查看发生了什么吗?
我的网站甚至可能出现问题,但没有任何日志信息,我无法继续进行。任何帮助表示赞赏。
为了提供更多背景信息,我不认为这是一个基于超时的问题,就好像是这样,cypress确实向我报告了这一点并停止了。然后我增加了超时。
我的规范文件
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()
})
})
感谢。
答案 0 :(得分: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
}
})
})
答案 1 :(得分:0)
我有同样的问题。通常,这与页面移出父页面有关,可以通过调用属性并将其更改为当前页面来解决。
fit-content