如何通过 nightwatch.js 测试搜索结果

How to test search result via nightwatch.js

我正在使用 nightwatch.js 进行一些端到端测试。现在我想检查一个特定的搜索结果是否符合我的预期。结果如下所示:

<div id="results" role="list" class="ui list">
    <div role="listitem" class="item">
        <span><strong>Samp</strong>le One</span>
    </div>
    <div role="listitem" class="item multiple pointer ">
        <div class="ui accordion">
            <div class="title pointer">
                <span><strong>Samp</strong>le Subcategory</span>
            </div>
            <div class="content pointer">
                <div role="list" class="ui list">
                    <div role="listitem" class="item pointer">Sub 1</div>
                    <div role="listitem" class="item pointer">Sub 2</div>
                </div>
            </div>
        </div>
    </div>
    <div role="listitem" class="item pointer">
        <span><strong>Samp</strong>le Three</span>
    </div>
</div>

这意味着有三个结果:样本一样本子类别样本三 .第二个也有子结果 Sub 1Sub 2

我没有找到类似 getElements 的内容,并检查了结果元素的数量和每个值。所以我尝试使用 getText 但我认为这是错误的方式...

this.searchTest = function (browser) {
  browser.getText("#results", function(result) {
    // ???
  });
};

getElements确实不存在。但您可以使用 elements 代替!

以下脚本为您提供了结果数和每个结果的文本内容:

module.exports = {
  'getElements': function (browser) {

    function getInfo(elements) {
      console.log('Number of results: ' + elements.value.length);

      elements.value.forEach(function (element) {
        browser.elementIdText(element.ELEMENT, function (res) {
          console.log('RESULT ' + element.ELEMENT + '\n', res.value);
        });
      });
    }

    browser
      .url('http://www.website.com/') // <--- Don't forget to change this!
      .waitForElementPresent('body', 1000)
      .elements('css selector', '#results > div[role="listitem"]', getInfo)
      .end();

  }
};