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

问题描述 投票:1回答:2

我们正在开发一个多层服务驱动的项目。 CRM驱动的UI项目用于设置规则引擎。 (UI - 我们使用Cypress.io实现自动化)

需要几分钟的时间才能在面向最终用户的Frontend-app中得到体现(它也由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中实现类似的功能

谢谢

cypress
2个回答
1
投票

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

仅使用单一标志完成。

不同的服务器,以获得用户身份的某种认证。

基本上是OpenID,例如在这里使用stackoverflow,是同一问题的解决方案,虽然你通常没有隐式登录 - 你需要明确登录。

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

但是,如果网站显然不属于一起,请注意可能的隐私问题。如果您不认识两台服务器属于同一实体,则主动分享其身份可能会让人感到疏远


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')
  })

这样就可以测试两种不同的方法,包括你可以设置的等待。

© www.soinside.com 2019 - 2024. All rights reserved.