Selenium Webdriver uygulamasını Java ile kullanarak Otomasyon üzerinde çalışıyorum. Öğeleri bulmak için XPath kullanıyorum. Bu iyi bir uygulama mı?Öğeleri iyi bir uygulama bulmak için mutlak XPath kullanıyor musunuz? Hayır ise, öğeleri bulmak için başka etkili bir yolu var mı?
cevap
XPath seçicilerini kullanmanız veya kullanmamanız, belge yapınızın ne olması gerektiğine bağlı olarak değişir.
Örneğin, formdaki 'submit' (gönder) düğmesini tıklatmak, ancak gönderme düğmesinin nerede olduğuyla ilgilenmek istemiyorsanız, bir öğeye kimliğine veya adına başvurmak iyi bir fikir ve ortak uygulamadır. Öte yandan, sayfada başka bir şeyin alt öğesi olması gereken bir öğe için test ediyorsanız, Xpath'i kullanmak gayet iyi.
Genel kurallar yoktur. Her zaman test edilen siteye bağlıdır.
Öğelerinizi bulmanın en iyi yolu Kimlik'dir. Bu her zaman mümkün değildir, özellikle test edilen site sizin kontrolünüz altında değilse ve id’leri html’ye kendiniz ekleyemezsiniz. tarafından belirleniyor Ad, kötü değil, ancak sitedeki siteye bağlı olarak, her sayfada/çerçevede benzersiz olmayabilir. iyi bir seçim olabilir tarafından linktext veya PartialLinkText arama, <a>
ve <button>
öğeleri için
(! "Ad" HTML name
niteliğini değil, etiket adı anlamına geldiğini unutmayın), ancak yalnızca sitenizin altında Test başka bir dile çevrilemez, çünkü bu genellikle tüm link metinlerini de değiştirir.
Bulma CSS seçicisi, XPath kadar güçlüdür, ancak özellikle sınıf isimleriyle uğraşırken genellikle çok daha kısa ve daha kompakttır.
Örnek (tam olarak aynı şeyi ifade eden XPath vs CSS): Bir HTML öğesinin içeriği olarak metin için arama yaparken
driver.findElement(By.cssSelector(".ecp-cartItemText"));
driver.findElement(By.xpath("//*[@class='ecp-cartItemText' or contains(@class,' ecp-cartItemText ') or substring(@class,1,17)='ecp-cartItemText ' or substring(@class,string-length(@class)-16)=' ecp-cartItemText']"));
Sadece, CSS (Selenyum bulunan hiçbir XQuery'yi yapmak mümkün değildir !) ve XPath kullanmalısınız.
Örnek:
//button[@type='button']//span[text()='Close']
Ayrıca zaten XPath eksenler boyunca web öğeleri bulunan göreli arama için, bazen XPath kullanmak faydalı olabilir.
Örnek:
element.findElement(By.xpath("following-sibling::p[1]/strong"));
Orada XPath kaçınılmazdır diğer durumlarda olabilir, ama herhangi karşılaşmadım. Bu yüzden sadece gerektiğinde XPath kullanın! Genellikle daha iyi yollar vardır.
Belki de okunabilirlik/süreklilik/istikrarın önemi hakkında biraz? –
Mutlak XPath
Mutlak XPath kök düğüm veya eğik çizgi (/) ile başlar. Mutlak kullanma avantajı, elemanı çok hızlı tanımlar. Burada bir dezavantaj varsa, herhangi bir şey ters giderse veya başka bir etiket eklendiyse, bu yol artık çalışmayacaktır.
Örnek: biz
html/baş/vücut/tablo olarak tanımlanan Yol/tbody/tr/
Bağıl XPath
inci göreceli xpath ise Yolun, seçiminizin düğümünden başladığı yer - kök düğümden başlaması gerekmez.
O Çift eğik çizgi (//)
Dizim başlar:
// tablo/tbody/tr/akraba xpath, sen don kullanmanın
Advantage inci Uzun xpath'dan bahsetmen gerek, ordan başlayarak ya da aradan başlayabilirsin. Buradaki dezavantaj, kısmi yolu belirtmedikçe elemanın tanımlanmasında daha fazla zaman alacaktır (tam yol).
- 1. LINQ Öğeleri bulmak için katılın Listeye girmiyor
- 2. Tüm öğeleri kenar boşluğuyla bulmak için Javascript yolu: auto
- 3. bir sütunda yinelenen öğeleri bulmak Oracle SQL
- 4. xpath ile xpath içeren bir düğüm bulmak için nasıl xml
- 5. Tüm öğeleri kapsayan en az sayıda etiket bulmak için Algoritma?
- 6. CheckedListBox öğeleri için ipuçları var mı?
- 7. Sadece ilk oluşumu bulmak için XPath ifadesi nedir?
- 8. Yöneticinin yönetici kimliğini bulmak için etkili bir yol
- 9. tutulma işlevini bulmak için bir kısayol tuşu var mı?
- 10. Baytları bulmak için herhangi bir "Pos" işlevi var mı?
- 11. Groovy: Belirli bir öznitelikle öğeleri bulmak için XMLSlurper için Doğru Sözdizimi
- 12. Kibrit sayımı bulmak için en etkili yol bir dizi kelime karşı bir dizi var?
- 13. Ruby'de sınıfın her bir örneğini bulmak için:
- 14. jQuery bulmak elemanının başka
- 15. 2D dizisinde bir sayının çaprazını bulmak mı?
- 16. En iyi boyut kombinasyonunu bulmak için algoritma
- 17. XPath kullanarak yalnızca görünen öğeleri nasıl seçerim?
- 18. Tüm "karakter-eşit" dizeleri bulmak için etkili algoritma?
- 19. Bir üyeyi kullanırken ortalama x değeri veya daha büyük olan tüm öğeleri bulmak için ActiveRecord sözdizimi
- 20. Bir dizi içinde yinelenen öğeleri bulmak için XOR operatörünü kullanma birçok durumda başarısız oluyor
- 21. Pandalar sütunlarında karışık türleri bulmak için iyi bir strateji nedir?
- 22. Başka bir listedeki bir listeden öğeleri kaldırın
- 23. Haritanın bir liste/yinelenebilir anahtardan herhangi birini içerip içermediğini bulmak için etkili bir yol
- 24. Ex Xpath, belirli düğümleri bulmak için çalışacak gibi görünmüyor
- 25. db'ye hangi ip adreslerinin bağlı olduğunu bulmak için var mı?
- 26. İki dizide ayrık elemanlar bulmak için verimli bir yol nedir?
- 27. Uzayları Bulmak için Normal İfade
- 28. JQuery sorunu, metin girişlerini bulmak için en yakın olanını kullanıyor
- 29. Seçilen öğeleri bir Jlist'den başka bir Jlist'e başka bir Sınıf
- 30. HashTable İçinde Bulmak için Yöntem
Evet, herkes böyle yapıyor. –
@DavidWallace Hayır, öyle değil. Ve mutlak yol ile 'xpath 'kullanarak yapabileceğiniz en kötü şeydir. – Guy
@Guy o zaman belki de ne yaptığınızı açıklayan bir cevap yazmalısınız. Çalıştığım tüm profesyonel test uzmanları bunu ya da buna benzer bir şey yaptı. –