是否可以在独立的量角器测试之间重用chrome实例?

时间:2016-10-11 12:27:03

标签: angularjs protractor

我正在使用量角器在一个重型角度站点上自动执行一些相当时间敏感的任务,这需要大约15秒才能加载。

我想看看是否有办法在各种测试之间保持chrome实例打开(以及加载页面),以避免每次都出现新的负载。

2 个答案:

答案 0 :(得分:1)

你可以肯定地说这些事件不会同时发生吗?如果他们这样做,您的测试结果将不一致。 Protractor每次打开一个新的浏览器窗口的原因是每次都为您提供一个干净的开始。这将确保您的测试每次都以完全相同的方式运行。

现在,至于解决方案:

在您的ng-disabled文件中,您指定了要使用的浏览器(在您的情况下是Google Chrome)。它可能看起来像:

conf.js

根据文档here,您可以为您的功能添加特定于Chrome的选项,例如exports.config = { seleniumAddress: 'http://localhost:4444/wd/hub', specs: ['myspec.js'], capabilities: { browserName: 'chrome' } }; show-fps-counter--start-maximized。可以找到完整的参数列表here。 (这是一个漫长的过程)

您需要添加的内容是:

--user-data-dir

例如,您在Windows上选择的路径可以是capabilities: { 'browserName': 'chrome', 'chromeOptions': { 'args': ['--user-data-dir=/your/path/of/choice'] } } 。 在基于unix的操作系统上--user-data-dir=c:\foo

--user-data-dir=/usr/foo标记将强制Chrome存储用户数据(Cookie,缓存数据,历史记录和书签)。 Here是它的文档。

它不会让浏览器会话保持打开状态(这不是理想的),但它应该会大大提高您的性能,因为它将使用之前测试运行所留下的缓存数据。

当第一个测试仍然运行缓慢时,不要被吓倒,第一个测试还没有缓存任何东西:)。

答案 1 :(得分:1)

量角器是一个很好的工具,所以清洁后也要适当。即quits启动浏览器。

因此,为了使您的浏览器在两个会话之间保持活动状态并节省5到15秒的时间,可以要求量角器选择attach to a browser session,而不是创建新的浏览器会话。

这可以使用config对象或通过命令行来完成。

<!-- language: typescript -->
/** in your protractor.conf.js or similar config object*/

directConnect: undefined,  // can be omitted, but just to show that directConnnect must not be set
seleniumAddress: 'http://localhost:4444/wd/hub',
seleniumSessionId: '<your session id - 32 char hex code'>,

但是,启动浏览器实例或查找浏览器实例并不容易。假设您正在运行硒,可以使用Selenium Standalone Console上的http://localhost:4444/wd/hub完成。

有关更多详细信息,请参见Webdriver-Reuse-Session NPM软件包。