2015-04-03 46 views
2

我有一個搜索結果頁面,我試圖點擊分頁按鈕。我可以通過中繼器查找頁面元素。我也能夠獲得單個頁面元素的文本。但是當我點擊頁面按鈕時,結果會根據我使用的點擊方法而有所不同。我嘗試了各種click()方法,但都無效。我還能嘗試什麼?量角器不能點擊一個元素,但能夠獲取文本

這裏是我的代碼:

this.clickPageNumber = function(pgNum) { 
    browser.executeScript('window.scrollTo(254,1600);').then(function() { 
       paginationPageNumberList.get(pgNum).then(function(we) { 
        browser.wait(EC.elementToBeClickable(we), 10000); 
        we.getText().then(function(pgText) { 
         console.log('Clicking page: ' + pgText); //prints correct pg 
         we.click(); //this part doesn't work 
         browser.pause(); 
        }); 

       }); 
     }); 
}; 

所以這裏的一切,我試過

browser.actions().mouseMove(we).click(); //no error but pg does not paginate 
we.sendKeys(protractor.Key.ENTER); //Error: Failed: unknown error : cannot focus element 
we.click(); //rror: Failed: unknown error: Element is not clickable at point (254, 806). Other element would receive the click: <a href="" ng-click="selectPage(page - 1)" class="ng-binding">...</a> 

下面是HTML:

<div id="dispute-queue-search-result-pagination" class="pagination-controller"> 
<ul class="pagination ng-isolate-scope ng-valid" ng-change="resultController.pageChanged()" next-text="›" previous-text="‹" max-size="resultController.maxSize" ng-model="resultController.currentPage" items-per-page="resultController.itemsPerPage" total-items="resultController.totalItems"> 
<!-- ngIf: boundaryLinks --> 
<!-- ngIf: directionLinks --> 
<li class="ng-scope disabled" ng-class="{disabled: noPrevious()}" ng-if="directionLinks"> 
<a class="ng-binding" ng-click="selectPage(page - 1)" href="">‹</a> 
</li> 
<!-- end ngIf: directionLinks --> 
<!-- ngRepeat: page in pages track by $index --> 
<li class="ng-scope active" ng-class="{active: page.active}" ng-repeat="page in pages track by $index"> 
<a class="ng-binding" ng-click="selectPage(page.number)" href="">1</a> 
</li> 
<!-- end ngRepeat: page in pages track by $index --> 
<li class="ng-scope" ng-class="{active: page.active}" ng-repeat="page in pages track by $index"> 
<a class="ng-binding" ng-click="selectPage(page.number)" href="">2</a> 
</li> 
<!-- end ngRepeat: page in pages track by $index --> 
<li class="ng-scope" ng-class="{active: page.active}" ng-repeat="page in pages track by $index"> 
<a class="ng-binding" ng-click="selectPage(page.number)" href="">3</a> 
</li> 
<!-- end ngRepeat: page in pages track by $index --> 
<li class="ng-scope" ng-class="{active: page.active}" ng-repeat="page in pages track by $index"> 
<a class="ng-binding" ng-click="selectPage(page.number)" href="">4</a> 
</li> 
<!-- end ngRepeat: page in pages track by $index --> 
<li class="ng-scope" ng-class="{active: page.active}" ng-repeat="page in pages track by $index"> 
<a class="ng-binding" ng-click="selectPage(page.number)" href="">5</a> 
</li> 
<!-- end ngRepeat: page in pages track by $index --> 
<!-- ngIf: directionLinks --> 
<li class="ng-scope" ng-class="{disabled: noNext()}" ng-if="directionLinks"> 
<a class="ng-binding" ng-click="selectPage(page + 1)" href="">›</a> 
</li> 
<!-- end ngIf: directionLinks --> 
<!-- ngIf: boundaryLinks --> 
</ul> 
</div> 

回答

3

,中繼器發現的每一個元素,您需要點擊a元素:

paginationPageNumberList.get(pgNum).element(by.tagName("a")).click(); 

或者如果你想等待它可以點擊:

var link = paginationPageNumberList.get(pgNum).element(by.tagName("a")); 

browser.wait(EC.elementToBeClickable(link), 10000); 
link.click(); 

也用另一種方式,並使用by.linkText定位:

this.clickPageNumber = function(pgNum) { 
    browser.executeScript('window.scrollTo(254,1600);').then(function() { 
     var link = element(by.css("ul.pagination")).element(by.linkText(pgNum.toString())); 
     link.click(); 
    }); 
}; 
+0

感謝那些工作。陣列搜索器將存儲根元素和孩子。必須下到小孩。 – awaken 2015-04-03 19:13:08

+0

@awaken good!另請查看替代方法。 – alecxe 2015-04-03 19:13:27

+0

雅第二個更清潔。 – awaken 2015-04-03 19:14:21

相關問題