Nightwatch.js e2e 测试如何设置 jQuery 在全局范围内可用?

Nightwatch.js e2e test how to set jQuery available at the global scope?

我正尝试在我的 Nightwatch.js e2e 测试中使用 jQuery 选择器 根据这个答案:

How to write a nightwatch custom command using jquery

我需要在我的应用程序的全球范围内提供 jQuery 才能正常工作。 (否则我会遇到 $(selector) refs 的麻烦...

'use strict';

var ClickElementByIndex = function(className, index) {
  if (!index) {
    index = 0;
  }

  this.execute(function(selector, i) {
    var $item = $(selector + ':eq(' + i + ')');
    if (!!$item) {
      $item.click();
      return true;
    }
    return false;
  }, [className, index], function(result) {
    console.info(result);
  });
};

exports.command = ClickElementByIndex;

您只需将 jquery 包添加为 package.json 的依赖项,然后您必须在文件中要求 jquery。通常,您已经为 nightwatch 完成了此操作。要将包 jquery 添加为 dep,运行 从项目的根目录执行此命令:

npm install jquery --save-dev

然后通过检查您是否为 jquerypackage.json 添加了额外的行来验证它是否有效。它看起来像这样:

"devDependencies": { "jquery": "^3.2.0",

注意:如果package.json还不存在,转到项目中的顶层文件夹和运行npm init。完成提示后,您可以使用上述命令将 jquerynightwatch 添加为 dev-deps。

最后,要在您的自定义命令或断言中要求 jquery,只需将 const $ = require('jquery') 添加到文件顶部以将 $ 分配为 jquery