2014-07-01 136 views
1

我的頁面上有一個下拉菜單。我對量角器測試的目標是點擊該下拉菜單中的選項之一,並有量角器檢查結果:在量角器的下拉菜單中選擇一個元素

<ul class="dropdown"> 
    <li class="nav-header">portfolio</li> 
    <li class="divider"></li> 
    <li class="dropdown-submenu"> ... </li> 


    <li ng-repeat="p in user.portfolios"> 
    <!-- this is the option we will click for our testing --> 
    <a href ng-click="displayPortfolio(p)>Portfolio 1 </a> 
    </li> 

    <li ng-repeat="p in user.portfolios"> 
    <a href ng-click="displayPortfolio(p)>Portfolio 2 </a> 
    </li> 

    <li ng-repeat="p in user.portfolios"> 
    <a href ng-click="displayPortfolio(p)>Portfolio 3 </a> 
    </li> 


</ul> 

我量角器測試看起來像:

it('should display relevant portfolio when clicked',function(){ 

    ptor.ignoreSynchronization = true; 
    element.all(by.xpath("//a[@ng-click='displayPortfolio(p)'])).then(function(list){ 
     list[0].click(); 
     expect(... some assertion here); 

    }); 
    ptor.ignoreSynchronization = false; 
} 

萬一你想知道,ptor.ignoreSynchronization已啓用,因爲我的網頁不斷輪詢後端的某些更新。

量角器引發以下錯誤,當我運行測試:

ElementNotVisisbleError: element not visible 

我不安靜明白這是什麼錯誤是什麼。該元素肯定是可見的,因爲當我查看頁面的源代碼時,我可以在DOM結構中看到它。

請教

回答

0

我已經通過直接設置值來處理相同的情況。找到元素並使用「sendKeys」設置值。

請試試您的方案。

0

您是否嘗試過使用中繼器定位器?

it('should display relevant portfolio when clicked',function(){ 
    var elements = element.all(by.repeater('p in user.portfolios')); 
    elements.get(0).click().then(function(){ 
     expect(... some assertion here); 
    }); 
} 
相關問題