2015-01-06 62 views
3

如何讓量角器在桌面上向下滾動?我的表進行無限滾動 - 它加載了20條記錄,當顯示倒數第二行時,它會取出下面的20條記錄。並非所有記錄都在視圖中...有些視頻尚未滾動,有些則在用戶滾動瀏覽視頻時處於上方。我在考慮測試是量角器:滾動表格並測試無限滾動

it('should fetch next set of records on scroll') { 
    element.all(by.id('users')).map(function (elm) { 
     return elm; 
    }).then(function (users) { 
     expect(users.length).toBe(20); 
    }); 

    // Scroll the table to the bottom to trigger fetching more records 

    element.all(by.id('users')).map(function (elm) { 
     return elm; 
    }).then(function (users) { 
     expect(users.length).toBe(40); 
    }); 
}; 

這是做這個的正確方法嗎?

HTML表格代碼:

<div ng-if="users && users.length > 0" class="table-scroll" ng-infinite-scroll="loadMoreUsers()"> 
    <table id="users-table" class="table table-hover text-overflow-ellipsis"> 
     <thead> 
      <td class="col1"></td> 
      <td id="users-table-name-col" class="col2">User</td> 
      <td id="users-table-date-col" class="col3">Birthday</td> 
     </thead> 
     <tbody ng-repeat="group in users"> 
      <tr ng-repeat="user in group.users" ng-click="userClicked(user);"> 
       <td class="col1"> 
        <img class="col-xs-1 profile-picture" style="padding:0" ng-src="{{user.profile_picture}}"></td> 
       <td class="col2"> 
        <div id="user-name"> {{ user.last_name }}, {{ user.first_name }} </div> 
       </td> 
       <td class="col3"> 
        <div id="user-date"> {{user.date}} </div> 
       </td> 
      </tr> 
     </tbody> 
    </table> 
</div> 
+1

顯示您的表的代碼 –

回答

4

的想法是在表中查找(tr標籤)的最新元素和家長的scrollTop設置爲最後一個元素的offsetTop滾動到它。

Element.scrollTop屬性獲取或設置元素內容向上滾動的像素數。元素的scrollTop 是元素頂部到其最上面的可見內容的距離的度量。

HTMLElement.offsetTop只讀屬性返回當前元素相對於offsetParent節點頂部的距離 。

var div = element(by.css('div.table-scroll')); 
var lastRow = element(by.css('table#myid tr:last-of-type')); 

browser.executeScript("return arguments[0].offsetTop;", lastRow.getWebElement()).then(function (offset) { 
    browser.executeScript('arguments[0].scrollTop = arguments[1];', div.getWebElement(), offset).then(function() { 
     // assertions 

    }); 
}); 

另見(使用類似的解決方案):

+0

感謝。它正在查找位置,但它不是滾動的。我的桌子不是整個屏幕......它只是屏幕的一部分。我需要將鼠標懸停嗎? – Jason

+0

@Jason很難說沒有看到它是什麼樣子..你怎麼讓它加載更多的項目?你只需要模擬手動在瀏覽器中做的同樣的事情 - 告訴我它是什麼。謝謝。 – alecxe

+0

類似於http://www.nytimes.com/ - 有一個名爲'Watching'的部分,它是一個嵌入式表格。如果您滾動鼠標不在桌面上時,整個屏幕會滾動。如果您在鼠標懸停在桌面上時進行滾動,則只會滾動表格。 – Jason