【问题标题】:keep protractor browser session alive保持量角器浏览器会话活动
【发布时间】:2014-11-02 14:31:33
【问题描述】:

我到处看了,但似乎只有我一个人在问这个问题。

如何使量角器中的浏览器会话保持活动状态,而不是每次运行测试时都必须登录。我已将登录逻辑放在onPrepare 中以避免记录每个测试功能

onPrepare: function() {
    var mymodule = require("./e2e/mymodule");
    mymodule.login();
    mymodule.switchToProject("someproject");
}

但是每次我运行我想跳过的量角器时,登录仍然需要 3-4 秒。有什么想法吗?

我更喜欢 chromeOnly: true 设置的解决方案,但单独的 selenium 服务器的解决方案也可以

【问题讨论】:

  • 哈!我的 e2e 套件进行了数千次测试,大约需要 30 分钟,但您抱怨 3-4 秒?呵呵,只有使用 Karma 进行单元测试才能达到这样的速度,Protractor e2e 意味着每次都在新的会话浏览器和会话缓存上启动,并且每次 e2e 运行至少作为第一步再次登录。
  • 话虽如此,您需要寻找一种在每次运行时重复使用 Chrome 配置文件的方法,使用相同的配置文件将允许浏览器保留 cookie。
  • 感谢 Leo 的提示,我将在网上查找如何重用特定的 chrome 配置文件。同时我想到了另一个很好的解决方案,通过 API 密钥实现登录,只需要一行 browser.get()
  • 哈哈顺便说一句,当然总的测试会很耗时,而且登录时间相对来说非常短,就像你说的那样。但是我大部分时间都会使用 ddescribe 和 iit 来进行测试——这样我构建的一个特性只需要在每几行代码之后进行测试——在这种情况下,登录 3-4 秒,然后 3-4 秒 iit会有点烦人
  • 我也想这样做,我同意我们需要找到一种方法来在测试之间保持量角器会话(理想情况下还有一个 REPL 环境)

标签: session selenium browser login protractor


【解决方案1】:

Protractor 每次运行时都会创建一个全新的 Chrome 配置文件。在搞砸之前,您需要知道这为您的测试提供了可靠性:它们每次都会以相同的方式运行,因为它们是从一张白纸开始的。如果您决定使用已登录的持久配置文件,那么一旦登录过期、配置文件被删除或您尝试在另一台计算机上运行它们,您的量角器测试就会开始失败。

也就是说,有一种方法可以让 Chrome 在每次运行 Protractor 测试时重复使用相同的配置文件(包括 cookie 和所有设置)。在您的protractor.conf.js 中,您将执行以下操作:

capabilities: {
    'browserName': 'chrome',
    'chromeOptions': {
        'args': ['--user-data-dir=/a/random/path']
    }
}

这里的'args' 是操作部分。它允许您在启动时将命令行参数传递给 Protractor 的 Chrome 版本(例如,您可以传入 '--start-maximized' 以在启动时最大化 Chrome)。

/a/random/path 替换为系统上的任何文件路径(从根目录开始)。只需确保您引用的文件夹已创建。您无需使用自己的 Chrome 配置文件路径——这只是不必要的麻烦。在某处创建一个文件夹并使用它。

当 Protractor 启动 Chrome 时,它​​的配置文件将位于您指定的位置,并且只要您的路径保持不变,它就会继续使用它。

请记住,这是一个浏览器操作,与 Selenium 或 Protractor 的操作完全无关。我不知道 Firefox 或其他浏览器是否有办法做到这一点,因为每个浏览器表面上都有自己的用户配置文件存储方式。

【讨论】:

    【解决方案2】:

    如何使量角器中的浏览器会话保持活动状态,而不是每次运行测试时都必须登录。我已将登录逻辑放在 onPrepare 中,以避免记录每个测试功能

    最好的选择是自己启动 Chrome 浏览器会话,然后将会话 ID 提供给量角器。

    有多种方法可以做到这一点

    1. 使用脚本启动浏览器 - 例如 webdriver-reuse-session 我创建的,我将扩展它以更好地支持 这个问题。
    2. 在以下位置使用 Selenium 独立 Web 界面

    如果这能解决您的问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 2011-12-17
      • 2012-04-11
      相关资源
      最近更新 更多