2015-06-25 11 views
8

sınama uygulamaları başka bir sorunla karşılaştı. Öğeyi tam metinle tıklatmam gerekiyor, bu yüzden cssContainingText ve her birini kullandığım bir çözüm buldum, daha sonra metinle eşleşmesi durumunda ve belirli bir öğeyi seçiyorsam, ama belki bu arpacık için daha iyi bir çözüm olduğunu düşünüyorum?İletki: Tam metinle eleman nasıl bulunur?

İkinci soru: bir yere stackoverflow ben

element.click().then(){ 
dosomething; 
}); 

olduğunu neden olacağını okumak 'doSomething;' tıkladıktan sonra performans göstereceğim, bunu deniyorum ve işe yaramıyor, 'dosomething' yapmak nasıl? tıklama sonrası gerçekleştirecek;

Sen bir seçici olarak by.xpath kullanabilirsiniz

cevap

16

: Bir sürü bulabilirsiniz

element(by.xpath('.//*[.="text" and class="some-css-class"]')) 

tam metni ile css sınıfları itibariyle tam metni

element(by.xpath('.//*[.="text"]')) 

By

xpath örneklerinin online. Kullanabileceğiniz bir tester da var.

+0

size çözüm, bana sahip aynı sonucu verirseniz, düğme1 ve düğme12 gibi bir öğe varsa button1 ve button12 bulacaksınız. Tam metinle eleman bulmak istiyorum ama sadece bir tane – tealang

+0

Çalışıyor olmalı. Lütfen html ve seçicilerinizi –

+0

gönderin, beni doğru anladığınızı bilmiyorum. Örneğin. Metin ile iki düğmem var: button1 ve button12. Eğer eleman yazıyorsam (by.xpath ('.//*[.= "button1"]')) Sadece button1'i bulmak istiyorum – tealang

4

1) Delian doğru cevabı vardır, ancak bunları kırpmak gerekir böylece birçok durumda element içeriği, ek boşlukları vardır:

getElementsByText: function (text, parentXpathSelector) { 
    parentXpathSelector = parentXpathSelector || '//'; 
    return element(by.xpath(parentXpathSelector + '*[normalize-space(text())="' + text + '"]')); 
} 

2) https://stackoverflow.com/a/21785088/3147680

0

XPath şık ama o kadar kolay değildir Başka birinin kodlara bakması gerekip gerekmediğini okumak için. Sıklıkla sadece cssContainingText ve zincirleme by.css kullanarak bir tekrarlayıcıda bir eleman seçerim. örnek: element(by.css('.dropdown-menu')).element(by.cssContainingText('span', constants.STATUS.PENDING)).click(); xpath'den daha yavaş olabileceğinden emin olun. Ben şimdi değil. Ama yönetilebilir ilk önce gelir

+1

Birden çok öğeye sahip olduğunuz ve bir diğerinin alt dizesi olduğu durumlar dışında iyi çalışır. "cssContainingText" her ikisi de eşleşecektir. – Stiggler