我是新来的柏树,遇到了一个问题。我有我的基本网址设置为域,我想测试的问题是,当我想测试登录我的基本网址网站的能力,我需要验证用户在另一个网站上,一旦我点击应用网站2号的页面在我的基本网址重新加载,然后我就可以测试网站的其余部分。
当我尝试通过测试访问站点2时,收到错误
cy. visit()失败,因为您正在尝试访问不同来源的URL。
新URL被视为不同的来源,因为URL的以下部分不同:
超域
在单个测试中,您只能cy. visit()同源URL。
我读了这个www.example.com,我试着在cypress.json中设置"chromeWebSecurity": false
,但我仍然遇到同样的问题(我在chrome中运行)https://docs.cypress.io/guides/guides/web-security.html#Set-chromeWebSecurity-to-false I've tried setting "chromeWebSecurity": false
in cypress.json but I still get the same issue (I'm running in chrome)
我是不是漏掉了什么?
5条答案
按热度按时间8aqjt8rx1#
作为一个临时但可靠的解决方案,我能够在Cypress Git的一个问题线程中找到这个脚本(我不记得我在哪里找到它,所以我不能链接回它)
将以下内容添加到cypress命令文件中
在测试中你可以调用
s71maibg2#
从Cypress的9.6.0版本开始,您可以使用
cy.origin
。如果要使用它,必须先将“experimentalSessionAndOrigin”选项设置为true。
下面是如何使用它。
cy.origin
更改baseurl,这样您就可以通过cy.visit('/')
链接到另一个外部链接。relj7zay3#
您可以存根从登录站点到基站点的重定向,并Assert所调用的URL。
基于Cypress的提示和技巧,这里有一个自定义命令来执行存根操作。
登录页面可能使用了几种方法中的一种来重定向,所以除了技巧中给出的
replace(<new-url>)
存根之外,我还添加了href = <new-url>
和assign(<new-url>)
。存根命令
测试
rvpgvaaj4#
你不能!
但是,* 也许 * 这将很快成为可能。见柏树票#944。
同时,你可以参考我在同一个线程中的轻松评论,我描述了我如何处理这个问题,而Cypress开发人员正在努力多域支持:
对于每个关注这篇文章的人,我都能感受到你们的痛苦! #944(评论)确实给了我们希望,所以在我们耐心等待的同时,这里有一个我今天用来编写多域e2e cypress测试的变通方法。是的,这很可怕,但我希望你们能原谅我的罪过。下面是四个简单的步骤:
1.假设每个
it
只能有一个cy.visit()
,则写入多个it
。1.是的,您的测试现在是相互依赖的。添加
cypress-fail-fast
以确保在某些测试失败时您甚至不会尝试运行其他测试(您的整个describe
现在是单个测试,在这个病态的交替现实中它是有意义的)。1.很有可能你需要在你的
it
之间传递数据。记住,我们已经在这个疯狂的"错误"的道路上了,所以没有什么能阻止我们这些顽皮的人。只要使用cy.writeFile()
来保存你的状态(无论你可能需要什么),并使用cy.readFile()
在你的下一个it
开始时恢复它。1.告我吧。
现在我所关心的是我的系统是否有测试。如果cypress增加了对多个域的支持,那就太好了!我将重构我的测试。在此之前,我将不得不忍受可怕的不可重试测试。总比没有合适的e2e测试好,对吗?对吗?
ny6fqffe5#
你可以手动设置window.location.href来触发页面加载,这对我很有效:
您还需要将
"chromeWebSecurity": false
添加到cypress.json配置中。注意:设置窗口导航不会告诉cypress等待页面加载,你需要自己等待页面加载,或者在get上使用timeout。