javascript与webdriverjs或java与selenium-webdriver?

use*_*885 5 selenium automation mocha.js node.js selenium-webdriver

我们的团队正计划开发一个框架来自动化手动测试用例.但我们仍然坚持在javascript和java之间进行选择.通过一些搜索,我们发现Webdriverjs是javascript的selenium绑定.现在,主要障碍是我们是否应该使用selenium-webdrier来使用webdriverjs或java的javascript?

我们已经使用selenium-webdriver了解java,但是当我们开始使用新框架时,我们只想打开简单,快速和可靠的选项.

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

mek*_*dev 6

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

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

这是为了方便

  • 开发和自动化团队,定位器等之间的协作.
  • 减轻开发人员编写硒测试的摩擦

Marcel Erz在我们的South Bay Selenium聚会上对此进行了非常好的介绍.我强烈建议您在做出决定之前先仔细阅读.

Java与JavaScript(用于UI测试)

  • 大多数测试由前端工程师编写
  • 不熟悉Java及其生态系统
  • 上下文切换
  • 不太可能接受测试

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

现在,如果您开始使用Javascript,那么主要的挑战当然是异步.大多数自动化工程师用于同步Python和中的模式Java.需要一些时间来习惯javascript的异步行为.但最终结果是值得的.

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

我们选择的selenium库是WebDriverJs(区分大小写),也就是selenium-webdrivernpm,它是官方的JavaScript端口.我们采用的主要原因之一selenium-webdriver是代码可读性以及实现类似同步语法的能力,以保证Java测试工程师的安全.这可以通过利用内置的Promise Manager控制流和Mocha Test Wrapper来实现,它可以自动处理对promise管理器的所有调用,使代码非常同步.

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

然后,这是一个添加自己的框架和构建页面对象的问题.Javascript中的页面对象是一个全新的野兽,您必须很好地掌握原型以及如何模拟Java的继承.

您还应该使用selenium-standalonenpm作为本地和远程执行的唯一通信点,而不是在测试中创建驱动程序实例(本地/远程).这样,框架具有相同的接口并使事情保持一致.您不希望跟踪多个本地驱动程序可执行文件并更新它们.一个包装可以处理所有事情.

如果您已经阅读过这里,并且您非常确定您将使用Node.js路由而不是Java.下面是我们框架的一个非常简化的版本,可以帮助您入门.它具有上面描述的所有实现.欢迎任何拉动请求!

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


bca*_*car 0

我个人会选择 selenium-webdriver 包并根据需要实例化不同的驱动程序。这样你就不会被限制在 js 驱动程序中。

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

其示例:

WebDriver wd = new WebDriver()
RemoteWebDriver rwd = new RemoteWebDriver()
ChromeDriver cd = new ChromeDriver() // for chrome browser
JavaScriptDriver jsd = ..... 
Run Code Online (Sandbox Code Playgroud)