如何使用 Nightwatch 获取元素 text/value/innertext?

How to get element text/value/innertext using Nightwatch?

我有 10 个具有相同 class ('botaoParametroAc') 的元素,我想一个一个地检查并单击包含 "id" 作为文本的元素。这是我现在的代码:

browser
    .waitForElementVisible('#txtBusca', 4000)
    .elements('class name', 'botaoParametroAc', function(res) {
      for(var item in res.value){
        console.log(item.text)
      }
    });

它为每个项目返回 "undefined"。

当我尝试打印 res.value 时,结果是:

{"ELEMENT":"0.06577812833436414-2"} {"ELEMENT":"0.06577812833436414-3"} {"ELEMENT":"0.06577812833436414-4"} {"ELEMENT":"0.06577812833436414-5"} {"ELEMENT":"0.06577812833436414-6"} {"ELEMENT":"0.06577812833436414-7"} {"ELEMENT":"0.06577812833436414-8"} {"ELEMENT":"0.06577812833436414-9"} {"ELEMENT":"0.06577812833436414-10"}

如何获取每个元素的文本或属性?!

只是为了更新,它现在正在工作。我需要为每个获取 innerText 的元素获取 elementIdAttribute 以发现它并在条件匹配时单击它。

        browser
        .waitForElementVisible('#txtBusca', 4000)
        .elements('class name', 'botaoParametroAc', function(result) {
            result.value.map(function(element, err) {
                browser.elementIdAttribute(element.ELEMENT, 'innerText', function(res) {
                    if (res.value == 'id') {
                        browser.elementIdClick(element.ELEMENT);
                    }
                })
            })
        })

对我来说,使用 elements + elementIdAttribute 效果不佳。

我做的是使用 execute():

'Verify table summary': function (browser) {
    browser.execute(function (data) {
      var innerTotal = 0;
      document.querySelectorAll('.cell-with-number')
         .forEach(a => innerTotal += Number(a.innerText));
      return innerTotal;
    }, [], function(res) {
      total = res.value;
    });

var total 将具有从浏览器上下文中的脚本 运行 返回的值。

从当前的 nightwatch 版本 (1.7.6) 开始,与 Chromedriver 和 Geckodriver 兼容的最简单方法似乎是 getElementProperty:

browser.getElementProperty('#thisElementId .some-class-name', 'innerText', 
  function(result) {
    console.log('result', result);
  }
);