目前,我正在使用:
browser.wait(EC.elementToBeClickable($('div[ng-model="loginInput"]')), 5000));
但是,这会返回多个元素。我不想使用凌乱的xpath或css选择器,因为在这种情况下路径很长。
我的browser.wait条件有效,但控制台返回:
WARNING - more than one element found for locator By.cssSelector("div[ng-model=\"loginInput\"]") - the first result will be used
WARNING - more than one element found for locator By.cssSelector("div[ng-model=\"loginInput\"]") - the first result will be used
我可以在elementToBeClickable()上使用.all和.first()吗?
答案 0 :(得分:1)
一种选择是使用first()
来获取与定位器匹配的第一个元素:
var elm = $$('div[ng-model="loginInput"]').first();
browser.wait(EC.elementToBeClickable(elm), 5000));
另外,如果您想等待所有元素都可点击,那么您可以使用elementToBeClickable
和EC.and
组合个人reduce()
来制作自定义预期条件 (未经测试):
var allElementsToBeClickable = function(elements) {
return elements.all().reduce(function(acc, elm) {
return EC.and(acc, EC.elementToBeClickable(elm));
}, function () {});
};
var elements = $$('div[ng-model="loginInput"]');
browser.wait(allElementsToBeClickable(elements), 5000));
答案 1 :(得分:0)
使用,获取要使用的数组中的相应元素 element.all(by.css( '某某'))得到(0);