directConnect:true与在Protractor中的某个端口启动seleniumServer

时间:2017-10-07 09:02:32

标签: protractor

我使用Protractor进行非角度应用程序的端到端测试 一旦我用protractor.conf.js文件写成 -

exports.config = {
      directConnect: true,

      // Capabilities to be passed to the webdriver instance.
      capabilities: {
        'browserName': 'chrome'
      },

      // Framework to use. Jasmine is recommended.
      framework: 'jasmine',

      // Spec patterns are relative to the current working directory when
      // protractor is called.
      specs: ['example_spec.js'],

      // Options to be passed to Jasmine.
      jasmineNodeOpts: {
        defaultTimeoutInterval: 30000
      }
    };

然后它适用于我。
之后我做了一些改变,比如 -

exports.config = {
      seleniumAddress: 'http://localhost:4444/wd/hub',

      // Capabilities to be passed to the webdriver instance.
      capabilities: {
        'browserName': 'chrome'
      },

      // Framework to use. Jasmine is recommended.
      framework: 'jasmine',

      // Spec patterns are relative to the current working directory when
      // protractor is called.
      specs: ['example_spec.js'],

      // Options to be passed to Jasmine.
      jasmineNodeOpts: {
        defaultTimeoutInterval: 30000
      }
    };

然后从selenium服务器开始,端口和测试用例成功运行。

所以我的问题是 -  两种方式之间的差异是什么?我知道当我们使用directConnect:true时,它不启动selenium服务器,然后直接使用chrome驱动程序,测试用例运行速度比其他方式快?

当量角器可以在没有selenium服务器的情况下进行测试时,我们为什么需要它? selenium服务器在protrator测试中做了什么?

1 个答案:

答案 0 :(得分:6)

正如你所说directConnect:true,Protractor直接与Chrome和Firefox的驱动程序通信(任何其他浏览器都会返回错误)。

directConnect:true的主要优势似乎是速度。测试启动并运行得更快。

另一方面Protractor mentions for the Selenium Server这个:

  

服务器可以处理不同语言的多个脚本。服务器可以在不同的版本和实现中启动和管理多个浏览器。

量角器肯定不想为directConnect:true不断维持这些可能性,因为它不是Protractor的主要目的,而且它们只能比SeleniumServer更糟糕。

跨浏览器测试服务,例如Br​​owserStack和SauceLabs,提供他们自己的SeleniumServers,应该连接它们以使用他们的服务。说服他们提供单独的Protractor解决方案似乎也毫无意义,特别是SeleniumServer已经广泛使用。

总的来说,我认为它是Protractor的一项服务,它们提供了directConnect的可能性,作为从Protractor开始的简化。使用SeleniumServer将是更合理的解决方案,并提供更广泛的可能性,例如跨浏览器测试。

我没有看到(并且从未听说过)比这背后更多的魔法。