如何在一个会话中测试两个网站

时间:2019-04-25 10:42:02

标签: cypress

我们正在致力于多层服务驱动的项目。 CRM驱动的UI项目用于设置规则引擎。 (用户界面-我们使用Cypress.io将其自动化)

更改需要花费几分钟时间才能体现在面向前端用户的前端用户应用程序中(Cypress.io框架也单独涵盖了该问题)

我们希望进行e2e UI测试,该测试首先在Rules引擎上启动,并且相同的测试应等待几分钟,然后继续检查对前端UI的影响

在硒中,我们可以做类似的事情-

driver.get("http://www.siteA.com/rules");//internal rules engine CRM
..
..    
driver.manage().timeouts().implicitlyWait(5, TimeUnit.MINUTES);
..
..
driver.get("http://www.siteB.com/public");//customer facing Frontend

是否可以在Cypress.io中实现类似的目的

谢谢

3 个答案:

答案 0 :(得分:1)

您不能从完全不同的服务器访问相同的“会话”。

仅用单个符号完成。

不同的服务器,以便获得某种形式的用户身份证明。

基本上是OpenID,例如在此处用于stackoverflow的方法是解决同一问题的方法,尽管通常没有隐式登录-您需要显式登录。

如果您同时控制参与服务器和身份验证的“第三方”(实际上可能是两个服务器之一的一部分),则应该能够轻松地提供一些隐式登录。

但是,如果站点显然不属于一起,则请注意可能存在的隐私问题。如果您不认识两个服务器都属于同一实体,那么如果您主动共享其身份,人们可能会感到疏远。

答案 1 :(得分:1)

如果您尝试转到两个不同的域,赛普拉斯将以以下消息响应:

  

CypressError:cy.visit()失败,因为您尝试访问一个   第二个唯一域。

     

每次测试您只能访问一个唯一的域。

     

可以使用不同的子域,但不能使用唯一的域。

     

您之前访问的域是:   'https://s3-portal.sqills-deep-purple-test.cloud.sqills.com'

     

您正在尝试访问以下新域:“ http://www.google.com

     

您可能需要重组一些代码,以防止这种情况发生   发生。

     

https://on.cypress.io/cannot-visit-second-unique-domain

因此您必须位于同一域中。例如,这有效:

it.only('test', function () {
    cy.visit('https://images.google.com')
    cy.contains('Google')
    cy.wait(500)
    cy.visit('https://google.com')
    cy.contains('Google')
  })

这样,可以测试两个不同的内容,包括可以设置的等待时间。

答案 2 :(得分:0)

我为此问题创建了一种解决方法,对我来说很好。

要在运行测试时导航到另一个URL,请使用以下代码:

cy.document().then((doc) => {
 doc.location.replace(newUrlHere)
})