首页 > 解决方案 > 遍历不同包装器中的元素失败

问题描述

表单中有多个元素,需要填写其中的 5 个。如果没有填写,这些字段会亮起红色并变为(All the same class name)。1 个元素在一个包装器中,2 个元素是表单的子元素,另外 2 个元素在不同的包装器中,因此使用 nth-child() 进行迭代无法正常工作。我有 errorData 数组,我在其中存储这些字段的文本值。问题似乎在 var elementCss = '.error'; 因为它似乎只需要第一个元素的值。但我不知道如何查看我发现的所有错误对象..

.error 的第一个元素的一切都很好,但我需要从数组中检查它们。

var errorData = ['Client', 'Project name', 'Project code', 'Project stream', 'Project service line'];

iterateForm: function() {
  return this
  .waitForElementVisible('.error', load_speed)
  .api.elements('css selector', '.error',function (elements) {
    for (i = 0; i < elements.value.length; i++) {
      var elementCss = '.error';
      this.assert.containsText(elementCss, errorData[i]);
    }
  });
}

Element <.error> was visible after 1350 milliseconds.
✔ Testing if element <.error> contains text: "Client".
✖ Testing if element <.error> contains text: "Project name".  - expected "Project name" but got: "Client"

标签: seleniumnightwatch.js

解决方案


推荐阅读