我使用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测试中做了什么?
答案 0 :(得分:6)
正如你所说directConnect:true
,Protractor直接与Chrome和Firefox的驱动程序通信(任何其他浏览器都会返回错误)。
directConnect:true
的主要优势似乎是速度。测试启动并运行得更快。
另一方面Protractor mentions for the Selenium Server这个:
服务器可以处理不同语言的多个脚本。服务器可以在不同的版本和实现中启动和管理多个浏览器。
量角器肯定不想为directConnect:true
不断维持这些可能性,因为它不是Protractor的主要目的,而且它们只能比SeleniumServer更糟糕。
跨浏览器测试服务,例如BrowserStack和SauceLabs,提供他们自己的SeleniumServers,应该连接它们以使用他们的服务。说服他们提供单独的Protractor解决方案似乎也毫无意义,特别是SeleniumServer已经广泛使用。
总的来说,我认为它是Protractor的一项服务,它们提供了directConnect的可能性,作为从Protractor开始的简化。使用SeleniumServer将是更合理的解决方案,并提供更广泛的可能性,例如跨浏览器测试。
我没有看到(并且从未听说过)比这背后更多的魔法。