2017-06-04 40 views
0

我正在使用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> 

這意味着有三種結果:樣品中的一個樣品子目錄樣品三。第二個也必須子結果分1分2

我沒有找到像getElements,檢查的數量和效果的元素的每個值。所以我試圖用getText,但我認爲這是錯誤的方式...

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

回答

0

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(); 

    } 
};