有没有办法强制赛普拉斯在同一个标签而不是另一个标签中打开
Posted
技术标签:
【中文标题】有没有办法强制赛普拉斯在同一个标签而不是另一个标签中打开【英文标题】:Is there a way to force cypress to open in same tab instead of another tab 【发布时间】:2020-10-12 11:21:24 【问题描述】:我知道赛普拉斯的权衡之一是在多个选项卡上进行测试。但是,我们的网站默认打开另一个选项卡。我可以强制赛普拉斯在同一个选项卡上打开以继续我的测试吗? 我在下面有这段代码,但仍会打开一个新标签:
cy.get(element).invoke('attr', 'target', ' _self').click()
我记得在某个可以完成的地方找到它,但我凌晨 1 点的大脑无法通过谷歌搜索找到它。 我还在赛普拉斯文档中找到了这一点,但它可能与我的案例无关,因为我需要在通过 SSO 登录的新页面上执行多个断言: https://docs.cypress.io/api/commands/invoke.html#Function-with-Arguments
【问题讨论】:
【参考方案1】:这对我有用:
cy.get(element).invoke('removeAttr', 'target').click()
【讨论】:
这对我有用,谢谢!【参考方案2】:我会尝试从 yielded 主题和 cy.visit()
调用 href
attr(这意味着 cypress 在同一个应用选项卡中打开它),例如:
cy.get(element).invoke('attr', 'href').then(myLink =>
cy.visit(myLink);
)
【讨论】:
这在同一个选项卡上打开时有效。不幸的是,即使它通过 SSO(赛普拉斯接受)重定向,它也不是同一个超级域,但在这种情况下不起作用——我想我会单独处理。【参考方案3】:你也可以使用
describe('describe', () =>
let myLink: string
it('Get response body', () =>
cy.intercept('https://prod.cypress.io/users').as('users')
cy.get(element).click().wait('@users')
.then(res =>
myLink = res.response.body.url
)
)
it('Go to myLink', () =>
cy.visit(myLink)
)
)
【讨论】:
以上是关于有没有办法强制赛普拉斯在同一个标签而不是另一个标签中打开的主要内容,如果未能解决你的问题,请参考以下文章