2014-09-27 92 views
3

我们的团队正在计划开发一个框架来自动化手动测试用例。但是我们被困在选择javascript和java之间。通过一些搜索,我们发现Webdriverjs是用于JavaScript的硒绑定。现在,主要的障碍是我们是否应该使用webdriverjs或带有selenium-webdrier的java去使用javascript?javascript与webdriverjs或与硒webdriver的Java?

我们已经通过selenium-webdriver了解了java,但是随着我们正在向前推进新框架,我们只是想打开简单,快速和更可靠的选项。

请将javascript与webdriverjs(我们需要学习javascript这一点)或java与selenium-webdriver建议?

回答

0

我会亲自选择selenium-webdriver软件包并根据需要实例化不同的驱动程序。然后你不会被锁定到只有js的驱动程序。

我们的团队利用硒远程/网格进行并行化,但在很多情况下,我们需要一个js驱动程序。

实例在其:

WebDriver wd = new WebDriver() 
RemoteWebDriver rwd = new RemoteWebDriver() 
ChromeDriver cd = new ChromeDriver() // for chrome browser 
JavaScriptDriver jsd = ..... 
3

我们碰到了,你现在看到了同样的挑战。 堆栈上有很多硒工程师在Java堆栈上,但在Node.js和selenium-webdriver堆栈上没有太多。

大多数较新的现代测试框架都是在Node.js中完成的,因为前端和后端均使用NodeJS完成,并将继续这种趋势。我会问的问题是开发团队是使用Java(例如Tomcat)还是使用Node.js来开发他们的产品。如果他们正在使用Node.js那么最好使用相同语言编写测试框架。

这是为了便于开发和自动化团队,定位器和等之间

  • 协作..
  • 减少摩擦开发者编写Selenium测试

有一个很Marcel Erz在我们的南湾硒会议上做了很好的介绍。我强烈建议你在做出决定之前通过它。

的Java与JavaScript的(对UI测试)

  • 通过前端工程师
  • 不熟悉Java和它的生态系统
  • 上下文切换
  • 不太可能编写的大多数测试接受测试

http://www.marcelerz.com/blog/talk-nodejs-based-selenium-testing-south-bay-selenium-meetup

现在如果你使用Javascript,主要的挑战是当然的异步性。大多数自动化工程师用于同步PythonJava中的模式。习惯JavaScript的异步行为需要一些时间。但最终的结果是值得的。

我们的框架主要是用Node.js编写的,我们使用Mocha作为我们的线束和测试运行器。推荐的断言库是Chai,但如果您需要特定需求,则可以使用其他库。

我们选择的硒库是WebDriverJs(区分大小写),也就是npm上的selenium-webdriver,这是官方的JavaScript端口。我们与selenium-webdriver一起进行的主要原因之一是代码可读性和能够实现开箱即用的类似同步的语法到让Java测试工程师记住。这可以通过利用内置的Promise Manager控制流和Mocha Test Wrapper来实现,该自动处理所有对promise管理器的调用,使代码非常同步。

https://code.google.com/p/selenium/wiki/WebDriverJs#Writing_Tests

然后,它添加在自己的框架和构建页面对象的问题。 Javascript中的页面对象是一个全新的野兽,你将不得不掌握原型,以及如何模拟Java的继承。

您还应该在npm中使用selenium-standalone作为本地和远程执行的硒的唯一通信点,而不是在测试中创建Driver实例(本地/远程)。这是为了使框架具有相同的界面并使事物保持一致。您不想跟踪多个本地驱动程序可执行文件并更新它们。一个包裹照顾一切。

如果你已经阅读到这里,并且你几乎可以确定你将使用Node.js路线而不是Java。以下是我们框架的一个非常简化的版本,可以帮助您开始。它具有上述所有的实现。任何拉请求也欢迎!

https://github.com/mekdev/mocha-selenium-pageobject

+0

你应该知道这是一个自动过程,建议编辑队列;你不需要问我为你看。无论如何,像维基百科一样思考Stack Overflow,而不是像论坛;我们的目标是尽可能地提供最好的问题和答案,所以诸如“感谢”或“p.s.你有一个错字”等额外的东西不应该在你的答案中;相反,请自己编辑问题。当你有2000名代表时,你将能够自己进行编辑而无需同行评审。 – durron597 2015-09-04 17:50:57

0

一点点搜索后,发现是JavaScript的硒需要罐运行。这意味着javascript selenium依赖于java硒,那么显然java硒会更快。

+0

呵呵?这个逻辑是如何工作的? :) – 2017-04-06 22:22:34

+0

JavaScript的硒库需要调用Java库来运行测试,或将JavaScript的硒转换为Java(我不这么认为)。这是否意味着java运行速度比JavaScript快?那是我的猜测。 – sh977218 2017-04-07 15:57:08

+1

不,java服务器单独运行。然后,您在单独的进程X中运行的测试将对Java服务器进行HTTP调用。 X的运行语言无关紧要 - 它不会影响硒服务器的速度。换句话说,如果你想让用不同语言编写的不同进程相互交谈,可以使用TCP,IPC或HTTP进行交谈。 – 2017-04-07 16:18:03