【问题标题】:javascript with webdriverjs or java with selenium-webdriver? [closed]带有 webdriverjs 的 javascript 或带有 selenium-webdriver 的 java? [关闭]
【发布时间】:2014-11-22 08:09:16
【问题描述】:

我们的团队正计划开发一个框架来自动化手动测试用例。但是我们被困在 javascript 和 java 之间进行选择。经过一番搜索,我们发现 Webdriverjs 是 javascript 的 selenium 绑定。现在,主要的障碍是我们应该使用 webdriverjs 的 javascript 还是使用 selenium-webdrier 的 java?

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    这是为了方便

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

    Marcel Erz 在我们的一次南湾 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(区分大小写),也就是 npm 上的 selenium-webdriver,它是官方 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 中的页面对象是一个全新的野兽,您必须很好地掌握原型以及如何模拟 Java 的继承。

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

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

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

    【讨论】:

    • 您应该知道有一个自动流程,即建议编辑队列;你不需要让我帮你看。不管怎样,把 Stack Overflow 想象成维基百科,而不是论坛;我们的目标是尽可能提供最好的问题和答案,因此您的答案中不应包含诸如“谢谢”或“p.s.您有错字”之类的额外内容;相反,自己编辑问题。当您拥有 2000 名代表时,您无需同行评审即可自行进行编辑。
    【解决方案2】:

    我个人会选择 selenium-webdriver 包并根据需要实例化不同的驱动程序。然后,您不会被锁定在 js 驱动程序中。

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

    其中的示例:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      相关资源
      最近更新 更多