2016-04-12 15 views
1

Halen kullanıyorum:İlk öğeye dönmek için EC.elementToBeClickable() öğesini .first() ile nasıl birleştirebilirim?

browser.wait(EC.elementToBeClickable($('div[ng-model="loginInput"]')), 5000)); 

Ancak bu çoklu elemanları döndürür. Bu durumda yol uzun olduğundan dağınık bir xpath veya css seçici kullanmak istemiyorum.

Benim browser.wait durum işleri, ancak konsol döner:

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 

Ben elementToBeClickable üzerinde .tüm ve .first() kullanabilir miyim()?

cevap

1

Seçeneklerden biri birinci eleman first() kullanarak konumlayıcısının eşleşen almak olacaktır bireysel elementToBeClickableEC.and ve reduce() (test edilmedi):

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)); 
0

Kullanmak istediğiniz dizide, element.all (by.css ('. Xyz')) kullanarak ilgili öğeleri bulun. Get (0); , Bir özel beklenen koşul birleştirerek yapmak

var elm = $$('div[ng-model="loginInput"]').first(); 
browser.wait(EC.elementToBeClickable(elm), 5000)); 

Başka, tüm öğelerin tıklanabilir olmasını beklemek istiyorum:

İlgili konular