Session 保持量角器浏览器会话处于活动状态

Session 保持量角器浏览器会话处于活动状态,session,selenium,browser,login,protractor,Session,Selenium,Browser,Login,Protractor,我到处都找过了,但似乎只有我一个人问这个问题 如何在量角器中保持浏览器会话的活动状态,而不必每次运行测试时都登录。我已将登录逻辑放在onPrepare中,以避免为每个测试功能记录日志 onPrepare: function() { var mymodule = require("./e2e/mymodule"); mymodule.login(); mymodule.switchToProject("someproject"); } 但每次运行我想跳过的量角器时,仍然需

我到处都找过了,但似乎只有我一个人问这个问题

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

onPrepare: function() {
    var mymodule = require("./e2e/mymodule");
    mymodule.login();
    mymodule.switchToProject("someproject");
}
但每次运行我想跳过的量角器时,仍然需要3-4秒才能登录。有什么想法吗


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

量角器每次运行时都会创建一个全新的Chrome配置文件。在处理这个问题之前,您需要意识到这为您的测试提供了可靠性:它们每次都以相同的方式运行,因为它们是从一张白纸开始的。如果您决定使用已登录的持久配置文件,则只要登录过期、配置文件被删除或您尝试在其他计算机上运行它们,您的量角器测试就会开始失败

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

capabilities: {
    'browserName': 'chrome',
    'chromeOptions': {
        'args': ['--user-data-dir=/a/random/path']
    }
}
“args”
这里是操作部分。它允许您在Gragrator版本的Chrome启动时将命令行参数传递给它(例如,您可以传入
'--start maximized'
以在启动时最大化Chrome)

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

当量角器启动Chrome时,其配置文件将位于您指定的位置,并且只要您的路径保持不变,它将继续使用它

请记住,这是一个浏览器操作,与Selenium或量角器的工作无关。我不知道是否有一种方法可以在Firefox或其他浏览器上实现这一点,因为每个浏览器表面上都有自己存储用户配置文件的方式

如何在量角器中保持浏览器会话的活动状态,而不必每次运行测试时都登录。我在onPrepare中加入了登录逻辑,以避免对每个测试函数进行日志记录

onPrepare: function() {
    var mymodule = require("./e2e/mymodule");
    mymodule.login();
    mymodule.switchToProject("someproject");
}
最好的选择是自己启动Chrome浏览器会话,然后向量角器提供会话id

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

  • 使用脚本启动浏览器-例如。 我已经创建了,我将扩展它以更好地支持 这个问题
  • 使用位于的Selenium独立Web界面

  • 让我知道这是否解决了你的问题

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