保持量角器浏览器会话活着

时间:2014-09-09 08:36:54

标签: session selenium browser login protractor

我到处都看,但看起来我只是问这个人。

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

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

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

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

2 个答案:

答案 0 :(得分:7)

Protractor每次运行时都会创建一个全新的Chrome配置文件。在弄清楚这一点之前,你需要意识到这为你的测试提供了可靠性:它们每次都会以相同的方式运行,因为它们是从空白的平板开始的。如果您决定使用已登录的持久性配置文件,那么一旦登录到期,配置文件被删除,或者您尝试在另一台计算机上运行它们,您的Protractor测试将开始失败。

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

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

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

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

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

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

答案 1 :(得分:1)

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

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

有多种方法

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

让我知道这是否可以解决您的问题。