2014-03-07 33 views
2

當使用量角器測試Angular JS應用程序時,我正面臨一個奇怪的行爲。 考慮到這個HTML結構,我想點擊一個內部div,它是一個過濾器。量角器無法點擊中繼器行

<div ng-hide="term.selected" ng-click="selectFilter('target',term.value)"  class="listItem"> 
       <div> 
        <label class="ng-binding">ZECPFICO00</label> 
        <span class="listItemNum ng-binding">157</span> 
       </div> 
</div> 

這裏是我的定位:

element(by.repeater('term in facets.target | filter:ecSearchText').row(1)).click(); 

執行此代碼時我webdriver的遊標移動到網頁中的過濾器,但並嘗試點擊網頁過濾器點擊不起作用,因此該過濾器不適用。

+0

在其瀏覽器中運行你的測試? :) – glepretre

回答

0

嗯我從來沒有見過或使用過定位器的方式,你有.row(1),但我是一個noob,所以這可能只是我自己的無知,但是你可以嘗試類似如下:

element(by.repeater('term in facets.target | filter:ecSearchText')).then(function(rows){ 
    rows[0].click(); 
}); 

應該點擊中繼器的第一行。 'rows'將包含所有行作爲數組。

+0

我也試過了,它沒有工作!順便說一句,你可以使用中繼器的行功能,事實上,我可以看到網絡驅動程序試圖點擊Web元素,但它沒有工作! – Ziwdigforbugs

+0

啊,確定不錯,我從來沒有見過像這樣認爲的id嘗試和貢獻。測試在點擊事件上失敗還是嘗試繼續?,它是否與xpath一起工作?顯然你不想永久使用XPath,但我覺得它是一個有用的工具,以找出如果你正在關注正確的元素 – Sirk

+0

哦,它也值得注意,但是我不知道這是否會影響你,但是,當定位元素量角器將始終默認爲元素的中心,除非指定了偏移量,所以如果元素的中心點不可點擊,那麼鼠標將會到達那裏但無法點擊它,這可能會影響您,如果只有文本在行是可點擊的,而不是整行本身 – Sirk

4

1 - 你不需要by.repeater它是可選的指定使用時,過濾器

2 - 薛克幾乎是沒有,您需要繼續鏈接你的承諾,下方點擊一個div的例子,您可以使用此方法..任何

var elements = element.all(by.repeater('term in facets.target')); 
elements.first().then(function (term) { 
    term.findElement(by.css('div')).then(function (div) { 
      div.click(); 
     }); 
}); 

3-你也可以這樣來做:

element.all(by.repeater('term in facets.target')).get(0).click(); 
+1

非常感謝。我早先知道.first(),但我想單擊第三個元素。所以這個代碼工作。 element.all(by.repeater('in facets.target'))。get(2).click(); –