2017-01-13 77 views
3

我想驗證量角器中的表格行數,在該類型的表中出現多次的頁面。我一直在嘗試使用first-of-type選擇器,但它似乎在捕捉兩個表,因爲它們不是並排顯示的。獲取量角器中的第一個元素

例如,假設此HTML:

<div> 
    <table class="foo"> 
    <tr> 
     <th>First row</th> 
     <th>Second row</th> 
     <th>Third row</th> 
     <th>Fourth row</th> 
    </tr> 
    </table> 
</div> 
<div> 
    <table class="foo"> 
    <tr> 
     <th>First row</th> 
     <th>Second row</th> 
     <th>Third row</th> 
     <th>Fourth row</th> 
    </tr> 
    </table> 
</div> 

這量角器代碼:

element.all(by.css('table:first-of-type tr:first-of-type th')).then(function (elements) { 
    expect(elements.length).toBe(4); 
}); 

量角器,理由做不到這一點有8個元素,而不是4.看來table:first-of-type選擇正在捕捉這兩個元素,因爲它們都是其父div組件的第一個孩子。我的項目的結構是這樣的,最好不要將每個類添加到每個包裝div

有沒有辦法獲得在量角器中找到的第一個元素,然後搜索其子元素?

回答

5

我還沒有使用:first-of-type作爲量角器中的CSS選擇器;但是,你可以得到firsttable所有th的,然後檢查,看看是否count是4

expect(element.all(by.css('table')).first().all(by.css('th')).count()).toBe(4); 
3

你當然可以做到這一點@cnishina的方式提出(和我真的喜歡上他的做法在進行長時間CSS選擇器),但是如果你想繼續使用一個CSS選擇器對於這個問題,你也應該適用的first-of-type(或first-child)父div

div:first-of-type > table:first-of-type > tr:first-of-type > th 

我還添加了>執行直接親子關係

相關問題