提问人:Martin Kostovski 提问时间:12/24/2019 更新时间:12/26/2019 访问量:196
使用量角器进行 e2e 测试的 Google 优化
Google Optimization for e2e test with protractor
问:
应实现登录优化,以加快所有 e2e 测试的执行时间。目前,在我们进行的每个测试之后,Chrome浏览器都会关闭,并且应该再次进行下一次会话登录,以便继续进行另一个测试。关于这个问题应该如何以及应该改变什么。有什么建议吗?
答:
不幸的是,如果没有关于您的应用程序如何工作的详细信息,我只能建议一些通用的东西:
通常应用程序将会话令牌之类的东西存储在 cookie 中,您可以尝试获取它,并在浏览器重新加载后再次设置。确保您在打开页面后尝试设置cookie。要阅读的文档:https://selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_Options.html#addCookie
browser.manage().addCookie(...)
您可以尝试使用所需的凭据从页面发出 HTTP 请求,因此您将获得的响应 cookie 将设置为页面。为此,您可以使用
browser.executeScript(...) with fetch/XMLhttprequest inside
您可能会考虑运行具有不同硒节点的硒网格。如果您在每次测试结束时不运行 browser.quit 或 browser.close,则可以将浏览器实例配置为在 selenium 网格中无限运行。这样,使用上面提到的 Xotabu4 方法,您可以使用 .如果需要,您还可以清理浏览器 cookie。browser.manage().addCookie(...)
现在,您正在运行的浏览器实例将具有您正在运行的测试的身份验证 cookie,您将不再需要担心登录问题。如果您使用 docker 容器在 selenium 网格中运行它,这些测试会更好,因为您可以监控不同的 chrome/firefox 节点,以及它们中的任何一个是否死亡或重新启动。您必须以这样一种方式配置 chrome 节点容器,即每次重新启动节点时,您都会向浏览器添加身份验证 cookie。
我给你的另一个建议是在自动化测试环境中禁用身份验证检查,并在不同的环境中测试身份验证。我知道这个建议的质量会因你的应用而异。
每个需要登录的测试场景在每次运行任何其他测试之前都会运行登录函数。其中的一件事是登录功能。如果您将该功能抽象出来并确保该功能运行良好,然后禁用该功能并测试其他所有功能。您将节省大量时间。在这里,您唯一需要确定的是,登录功能以完全相同的方式与应用程序的其余移动部分集成。
评论