2015-10-16 88 views
0

无法点击元素上的所有方法。我得到的对象没有方法过滤器。在研究过程中,我发现它与某些字符串有关。请指教。谢谢无法点击元素上的元素全部

var sflag = $('a[ng-click="flagPhoto()"]'); 
    browser.wait(EC.elementToBeClickable(sflag), 30000, "not clickable"); 
    $('a[ng-click="flagPhoto()"]').filter(function(elem, index) { 
    return elem.getText().then(function(text) { 
    return text === 'flag for abuse'; 
    }); 
}).then(function(filteredElements) { 
    expect(filteredElements[0].isPresent()).toBe(true); 
    filteredElements[0].click(); 
}); 
+0

此问题有无关的webdriver。请删除标签。 – CMerrill

回答

3

您没有使用此选择器选择多个元素。只有第一个找到的元素将被选中:

$('a[ng-click="flagPhoto()"]').filter... 

取而代之的是,使用此:

$$('a[ng-click="flagPhoto()"]').filter 
+0

谢谢finspin。我越来越无法调用未定义错误消息的方法绑定。我认为可能是getText导致了问题,并删除了$$('a [ng-click =“flagPhoto()”]')。 ; filteredElements [0] .click(); });(函数(filteredElements){expected(filteredElements [0] .isPresent()).Be(true); } }); – user2744620

+0

'filteredElements'是否可能是一个空数组?在expect()之前尝试'console.log(filteredElements)'。 – finspin

+0

我使用了不同的定位器,现在它可以工作。也许我之前使用的定位器存在问题。非常感谢element.all(by.css('a.flag'))。 filter(function(elem){return elm.isDisplayed(); }))。 first()。 click(); – user2744620