断言包含特定值的字符串(如果没有则通过测试)

时间:2019-05-08 15:44:01

标签: assert nightwatch.js

作为我的 nightwatch.js 测试的一部分,我有以下代码将列出元素的所有值(在本例中为英国城镇的列表);

"Page 2 Location SEO Crawl paths are displayed": function (browser) {
  browser.elements('xpath', '//a[contains(@href,"location")]', function (results) {
    results.value.map(function(element) {
      browser.elementIdAttribute(element.ELEMENT, 'innerText', function(res) {
        var resme = res.value;
          console.log(resme)
      });
    });
  });
},

这样可以正确列出所有元素值;

enter image description here

我现在想做的是检查结果中是否列出了诺丁汉,如果没有,则失败

我安装了 assert npm软件包以查看是否有帮助,这将我的代码更改为;

"Page 2 Location SEO Crawl paths are displayed": function (browser) {
  browser.elements('xpath', '//a[contains(@href,"location")]', function (results) {
    results.value.map(function(element) {
      browser.elementIdAttribute(element.ELEMENT, 'innerText', function(res) {
        var resme = res.value;
        console.log(resme);
          if (resme.includes("Nottingham")) {
            assert.ok(true);
          }
          else {
            assert.ok(false);
        }
      });
    });
  });
},

但是这不起作用,因为我不断收到以下错误;

enter image description here

正在使用 assert 软件包进行测试的最佳方法,或者存在一种更直接的方法来断言 Nottingham 已包含在此列表中,并且测试<如果不是,则strong>失败。

我尝试使用resme.includes("Nottingham"),但这不会使测试失败。

任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

看起来像对每个项目都调用了最内部的函数(将res作为参数的函数),并且resme是您当前正在迭代的项目,而不是数组,因此include函数无法按预期工作。 / p>

我对该库不熟悉,但我想您必须执行以下操作:

"Page 2 Location SEO Crawl paths are displayed": function (browser) {
  var found = false;
  browser.elements('xpath', '//a[contains(@href,"location")]', function (results) {
    results.value.map(function(element) {
      browser.elementIdAttribute(element.ELEMENT, 'innerText', function(res) {
        var resme = res.value;
        console.log(resme);
        if (resme === "Nottingham") {
          found = true;
          // Maybe return something like null or 0 to stop iterating (would depend on your library).
        }
      });
    });
  });
  assert.ok(found)
},

您初始化一个具有错误值的变量“ found”,并在遍历每个值时将其设置为true(如果找到)。 (可选)您应该在此时中断迭代。整个过程完成后,断言您已找到所需的值。