node.js - 带有 webdriverjs 的 javascript 或带有 selenium-webdriver 的 java?

标签 node.js selenium selenium-webdriver automation mocha.js

<分区>

我们的团队正计划开发一个框架来自动执行手动测试用例。但是我们一直在javascript和java之间纠结。通过一些搜索,我们发现 Webdriverjs 是 javascript 的 selenium 绑定(bind)。现在,主要的障碍是我们应该选择带有 webdriverjs 的 javascript 还是带有 selenium-webdrier 的 java?

我们已经知道 java 和 selenium-webdriver,但是随着我们朝着新框架前进,我们只想打开简单、快速和更可靠的选项。

请建议使用 webdriverjs 的 javascript(我们需要为此学习 javascript)或使用 selenium-webdriver 的 java?

最佳答案

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

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

这是为了方便

  • 开发和自动化团队、定位器等之间的协作。
  • 减少开发人员编写 selenium 测试的摩擦

在我们的一次南湾 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,但如果您需要特定需求,也可以使用其他断言库。

我们选择的 selenium 库是 WebDriverJs(区分大小写)又名 selenium-webdriver,在 npm 上是官方 JavaScript 端口。我们选择 selenium-webdriver 的主要原因之一是代码的可读性和开箱即用的类似同步语法的能力,以让 Java 测试工程师牢记。这可以通过利用内置的 Promise Manager 控制流和 Mocha Test Wrapper 来实现,Mocha Test Wrapper 会自动处理对 Promise Manager 的所有调用,从而使代码非常同步。

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

接下来就是加入自己的框架,构建页面对象的问题了。 Javascript 中的页面对象是一个全新的野兽,您必须很好地掌握原型(prototype)以及如何模拟 Java 的继承。

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

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

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

关于node.js - 带有 webdriverjs 的 javascript 或带有 selenium-webdriver 的 java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26074382/

相关文章:

java - Selenium/Cucumber 测试未在 Maven 中运行

node.js - 按顺序执行几个 "npm scripts"

node.js - 文件下载在 Nodejs 中给出损坏的文件

node.js - 如何在 VS2015 中更新 Node 和 npm?

c# - 如何使用 Selenium Webdriver (C#) 获取页面名称?

java - 如何捕获工具提示及其文本

c# - 在 Selenium C# 中检索 <span>Text</span> 之间的文本

javascript - 如何使用 Node js 迭代不规则嵌套 json

Java:Selenium:WebDriver:无法解析 List<WebElement> 对象;获取错误 "cannot be cast to java.lang.String"

java - 如何使用 selenium 将 javascript 文件加载到 DOM 中?