SORU
29 EKİM 2008, ÇARŞAMBA


Kullanarak metin içeren arama için XPATH

XPather Browser HTML sayfası üzerinde XPATH ifadelerimi kontrol etmek için kullanıyorum.

Son hedefim benim kullanıcı arayüzleri test etmek için Selenyum bu ifadeler kullanmaktır.

İçeriği şuna benzer bir HTML dosyası var:

<tr>
  <td>abc</td>
  <td> </td>
</tr>

Bir metin dizesini içeren bir düğüm seçmek istiyorum " ".

"Abc" sorun yok. normal bir dize ile Bir XPATH //td[text()="abc"] benzer kullanıyorum.

//td[text()=" "] gibi bir XPATH ile çalıştığımda hiçbir şey döndürür. Orada özel bir kuralı ile ilgili metinler "&" ?

CEVAP
29 EKİM 2008, ÇARŞAMBA


OpenQA, Selenyum arkasında adamlar, zaten bu sorunu ele var gibi görünüyor. Explicitely boşluklar maç için bazı değişkenleri belirlemiş. Benim durumumda, bir XPATH //td[text()="${nbsp}"] benzer kullanmam lazım.

Burada OpenQA bu konuda (here): metin tekrarladım

HTML otomatik olarak normalleştirir boşluk elemanları, görmezden içinde lider/sondaki boşlukları ve dönüştürme içine ekstra boşluk, sekme ve yeni satır bir tek mekan. Selenyum metin okuduğunda Bu sayfa, dener bu davranış, yinelenen, tüm sekmeleri görmezden ve yeni satır iddialar göre yapın, HTML ve metin ne tarayıcıda ne zaman görünüyor işlenmiş. Bütün değiştirerek yapıyoruz görünür olmayan (boşluk dahil non-breaking " ") ile bir mekan tek mekan. Tüm görünür satır başları (<br>, <p> <pre> biçimlendirilmiş yeni satır) muhafaza edilmelidir.

Aynı normalleştirme mantık kullanıyoruz HTML Selenese metni test çalışması tablo. Bu bir numarası vardır avantajları. İlk, gerek yok sayfanın HTML kaynak için bak onayları gerekir. ; "10* *" sembolleri görünmez olmamalı yani son kullanıcıya ve yazarken onlar hakkında endişelenmenize gerek Selenese testleri. (Yerleştirmeye gerek yok " " test durumda işaretleri bulunduğu bir alanda assertText için " ".) Ayrıca ekstra koymak olabilir senin Selenese içinde yeni satır ve boşluk Aynı kullandığımızdan <td> etiketleri; normalleştirme test çalışması mantık metin üzerinde yaptığımız, emin olun elimizden geldiğince bu iddialar ve çıkarılan metin maç tam olarak.

Bu sorun üzerinde biraz oluşturur o zaman, nadir de olsa gerçekten /Ekle ekstra boşluk etmek ister misin test durumda. Örneğin, bir alan gibi bir metin yazmanız gerekebilir bu: "foo ". Ama eğer sadece senin <td>foo </td> yaz Selenese test çalışması, değiştiririz sadece bir boşluk fazladan boşluk.

Bu sorunun basit bir çözümü vardır. Selenese,bir değişken tanımladık. ${space} kimin değer bir tek. boşluk. ${space} için kullanabilirsiniz ekleme olmayacak bir mekan otomatik olarak kesilmiş. <td>foo${space}${space}${space}</td>. Ayrıca bir değişken ekledik Eklemek için kullanabileceğiniz ${nbsp}, bölünemez boşluk.

XPaths unutmayındeğilnormale bizim gibi boşluk. Eğer ihtiyacınız varsa gibi bir XPath yazmak //div[text()="hello world"] ama Link HTML gerçekten "hello world", gerekir için Ekle bir gerçek " " içine Selenese bu maçı almak için test çalışması, bunun gibi: //div[text()="hello${nbsp}world"].

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • Film Riot

    Film Riot

    16 NİSAN 2006
  • Learn Math Tutorials

    Learn Math T

    20 Kasım 2011