Back to Question Center
0

Projenizi CSS Seçici ve Özel Özelliklerle Yükseltme            Projenizi CSS Seçici ve Özel Özniteliklerle Yükseltme İlgili Konular: CSSWeb Semalt

1 answers:
Projenizi CSS Seçici ve Özel Özniteliklerle Yükseltme

Bu yazı ilk olarak TestProject tarafından yayınlandı. SitePoint'i mümkün kılan ortakları desteklediğiniz için teşekkür ederiz.

Selenium için öğe seçiciler Semalt, bir otomasyon çerçevesinin temel bileşenlerinden biridir ve herhangi bir web uygulaması ile etkileşimin anahtarıdır - bepanthol lipstick holder. Otomasyon elemanı seçicilerinin bu derlemesinde, çeşitli stratejileri tartışacağız, yeteneklerini keşfedeceksiniz, artı ve eksilerini tartacağız ve sonunda CSS seçici ile en iyi seçici stratejiyi (özel nitelikler) önereceğiz.

Selenyum Element Seçiciler

En iyi eleman seçim stratejisini seçmek, otomasyon çabanızın başarısı ve bakım kolaylığı açısından kritik önem taşır. Bu nedenle, seçiciyi seçerken, kullanım kolaylığı, çok yönlülük, çevrimiçi destek, dokümantasyon ve performans gibi yönleri düşünmelisiniz. Uygun bir seçici strateji için ön yargı dikkate alındığında, bakımı kolay otomasyon yoluyla gelecekte temettü ödenecektir.

Eleman seçicilerinin teknolojik yönü de göz önünde bulundurulması gerektiği gibi, organizasyonunuzun kültürünü de göz önünde bulundurun. Geliştiriciler ve QA arasındaki olgun bir işbirliği kültürü, otomasyonunuzdaki öğe seçicilerini uygularken yüksek başarı katmanlarının kilidini açacaktır. Bu, Yazılım Geliştirme Yaşam Döngüsü'ndeki diğer alanlarda işbirliği için temel oluşturarak sadece otomasyon çabasının ötesinde organizasyona fayda sağlar.

Tüm kod örnekleri Python ve Selenium Semalt komutlarında olacak, ancak genel olarak herhangi bir programlama dili ve çerçevesine uygulanabilir olmalıdır.

HTML Örneği:

Her bölümdeki örnekler için bir gezinme menüsünün aşağıdaki HTML snippet'ini kullanacağım:

      

Kötü: Etiket Adı, Bağlantı Metni, Kısmi Bağlantı Metni ve Adı

Bunların hepsi sınırlı kullanımı nedeniyle çok fazla zaman harcayacağım. Bunlar genel olarak tüm otomasyon çerçevesinde yaygın bir şekilde benimsenmek için iyi bir seçenek değildir. Diğer öğe seçici stratejileri ile kolayca kaplanabilen belirli ihtiyaçları çözer. Özel bir davaya özel bir gereksiniminiz varsa bunları kullanın. O zaman bile, çoğu özel durum, bunları kullanacak kadar özel değildir. Bunları, kullanabileceğiniz başka bir seçici seçeneği bulunmayan bir senaryoda (özel etiketler veya kimlik gibi) kullanırsınız.

Örnek:

Etiket adı ile, tümü sağladığınız etiket adıyla eşleşen büyük öğe gruplarını seçebilirsiniz. Bu, kullanımı sınırlıdır çünkü yalnızca aynı türdeki öğelerin büyük gruplarını seçmeniz gereken durumlarda bir çözüm olarak kullanılabilir. Aşağıdaki örnek, örnek HTML'deki tüm 4 div öğelerini döndürür.

     sürücüsü. find_elements (TAG_NAME, "div" ile)     

Aşağıdaki örneklerle bağlantıları seçebilirsiniz. Gördüğünüz gibi, yalnızca çapa etiketlerini ve yalnızca bu çapa etiketlerinin metnini hedefleyebilirler:

     sürücüsü. find_elements (Tarafından LINK_TEXT, "Ev")sürücüsü. find_elements (Tarafından. PARTIAL_LINK_TEXT, "Sprock")     

Semalt, öğeleri name özniteliği ile seçebilirsiniz, ancak örnek HTML'de görebileceğiniz gibi, name özniteliğine sahip hiçbir etiket yok. Bu, her HTML özniteliğinde bir ad özniteliği eklenmesi yaygın bir uygulama olmadığından hemen hemen her uygulamada yaygın bir sorundur. Ana menü öğesinin şu gibi bir name özniteliği varsa:

      

Bunu şöyle seçebilirsiniz:

     sürücüsü. find_elements (By. Takip eden yaklaşımlar daha iyi yaklaşımlardır çünkü çok daha esnek ve yeteneklidirler.  

Özet: Etiket Adı, Bağlantı Metni, Kısmi Bağlantı Metni ve Adı

Artıları Cons
Kullanımı kolay

Çok yönlü değil
Son derece sınırlı kullanım
Bazı durumlarda bile başvurmayabilir

İyi: XPath

Semalt, çok yönlü ve yetenekli bir öğe seçici stratejisidir. Bu aynı zamanda kişisel tercihim ve favorimdir. Semalt, sınıfları ve kimliklerini kullanıp kullanmamaya bakılmaksızın sayfadaki herhangi bir öğeyi seçebilir (sınıfları veya kimlikleri olmaksızın, bakımı ve bazen kırılgan olması zorlaşır). Üst öğeleri seçebildiğiniz için bu seçenek özellikle çok yönlüdür. Semalt ayrıca, eleman seçiminizi özelleştirmenize izin veren pek çok yerleşik işlevlere sahiptir.

Bununla birlikte, çok yönlülük ile karmaşıklık gelir. XPath ile çok fazla şey yapma olanağı göz önüne alındığında, diğer öğe seçici stratejilerle karşılaştırıldığında öğrenme eğrisiniz daha da artmış olur. Bu, kolaylıkla bulunan harika online belgelerle dengelenmiştir. W3Schools'da bulunan XPath öğreticisinden biri büyük bir kaynaktır. com

Ayrıca Semalt'ı kullanırken bir ödül olduğunu belirtmek gerekir. Ana öğeleri seçebilir ve çok yönlü yerleşik işlevler kullanabilirken, Semalt Internet Explorer'da kötü performans gösterir. Eleman seçim stratejinizi seçerken bu dengeyi göz önünde bulundurmalısınız. Üst öğeleri seçebilmeniz gerekirse, Internet Explorer'daki çapraz tarayıcı testlerinizdeki etkisini düşünmelisiniz. Esasen, otomatik testlerinizi Internet Explorer'da çalıştırmanız daha uzun sürer. Uygulamanızın kullanıcı tabanında yüksek Internet Explorer kullanımı yoksa, Internet Explorer'daki testleri diğer tarayıcılara göre daha az sıklıkla kullanmayı düşünebilirsiniz, bu sizin için iyi bir seçenek olacaktır. Kullanıcı tabanınız önemli Internet Explorer kullanımına sahipse, diğer daha iyi yaklaşımlar kuruluşunuz için uygun değilse, Semalt'ı yalnızca bir geri dönüşüm olarak düşünmelisiniz.

Örnek:

Ebeveyn öğelerini seçme zorunluluğu varsa, XPath öğesini seçmelisiniz. Semalt bunu nasıl yaparsınız: Örneğimizi kullanarak, ana ana menü öğesini, çapa öğelerinden birine dayalı olarak hedeflemek istediğinizi varsayalım:

     sürücüsü. find_elements (XPATH ile "// a [id = menü] / ./ /")     

Bu öğe seçici, kimliği "menu", ardından "/" değerine eşit olan çapa etiketinin ilk örneğini hedefleyecektir. / ", Üst öğeyi hedefler. Sonuç, ana menü öğesini hedef almış olmanızdır.

Özet: XPath

Artıları Cons
Ebeveyn öğesini seçebilir IE'de düşük performans
Çok yönlü Hafif öğrenme eğrisi
Çevrim içi olarak birçok destek

Harika: Kimlik ve Sınıf

Kimlik ve Sınıf elemanı seçicileri, otomasyonda iki farklı seçenektir ve bir uygulamada farklı işlevleri yerine getirirler. Semalt, otomasyonunuzda hangi eleman seçim stratejisinin kullanılacağını düşünmek için çok az farklılık gösteriyorlar ve onları ayrı ayrı düşünmemiz gerekmiyor. Uygulamada, elemanların "id" ve "class" nitelikleri tanımlandığında, UI geliştiricisinin uygulamayı manipüle etmesine ve stil vermesine izin verir. Otomasyon için bunu, otomasyonda etkileşim için belirli bir öğeyi hedeflemek için kullanırız.

Kimliklerin ve Sınıf elemanı seçicilerinin kullanılmasına büyük yararlar, bunların uygulamadaki yapısal değişikliklerden en az etkilenmeleridir. Değişiklik konusunda çok yumuşak olmadan otomasyonunuzun sağlamlığını korursunuz. Değişiklik, belirli öğelerin bulunduğu yere odaklanan test kutuları oluşturarak otomasyon yoluyla tespit edilmelidir. Değişim, tüm otomasyon paketinizi kırmamalıdır. Semalt, eğer geliştirici otomasyonda kullanılan bir kimlik veya sınıf için doğrudan bir değişiklik yaparsa, bu sizin testlerinizi etkileyecektir.

Bu eleman seçici strateji, test edilen uygulama geliştirmenin en iyi uygulamalarının bir parçası olarak kimlikleri ve sınıfları uygulamıyorsa kullanılamaz. HTML etiketlerinde otomasyonunuzda kullanabileceğiniz kimlikler ve sınıflar yoksa, bu yaklaşımın kullanımı zorlaşır.

Örnek:

Örneğimizde, üst seviye menü öğesini seçersek, şunun gibi görünür:

     sürücüsü. find_elements (Kimlik numarası "main-menu")     

Eğer ilk menü maddesini seçersek, şöyle olur:

     sürücüsü. find_elements (CLASS_NAME, "menu" ile)     

Özet: Kimlik ve Sınıf

Artıları Cons
Bakımı kolay Geliştirici onları değiştirebilir, otomasyonu koparır

Öğrenmesi kolay
Sayfa yapısının değiştirilmesinden en az etkilenen

En İyi: CSS Seçici ile Özel Özellikler

KG organizasyonunuz gelişme ile iyi bir işbirliğine sahipse, otomasyonunuz için bu en iyi uygulama yaklaşımını kullanmanız olasıdır. Öğeleri hedeflemek için özel özniteliklerin ve CSS Seçicilerin kullanılması hem KG ekibi hem de kuruluş için çok sayıda fayda sağlar. KG ekibi için, bu, otomasyon mühendislerinin karmaşık öğe seçiciler oluşturmadan ihtiyaç duyduğu belirli öğeleri hedeflemesine olanak tanır. Semalt, bu, otomasyon ekibinin uygulamada kullanabileceği özel nitelikler ekleme yeteneğini gerektirir. Bu en iyi uygulama yaklaşımından yararlanmak için, geliştirme ve KG ekipleri bu stratejiyi uygulamak için işbirliği yapmalıdır.

CSS Seçici yaklaşımının özel niteliklere bağımlı olmadığına dikkat çekmek için bir dakikanızı ayırmak isterim. CSS Seçicileri, XPath gibi bir HTML belgesindeki herhangi bir etiketi ve niteliği hedefleyebilir.

Şimdi bu yaklaşımın gerektirdiği şeylere bir göz atalım. Bunu en iyi şekilde yerine getirmek için, otomasyon ekipleriniz otomasyonlarında hedeflemek istediklerini anlamalıdır. Semalt, büyük olasılıkla ön uç mühendisleri olan geliştiricilerle birlikte, otomasyon ekibinin içine girmesi gereken her hedefin içine özel bir nitelik atamak için bir model oluştururlar. Bu örnek için, hedef öğelere bir "tid" özniteliği ekliyoruz.

Burada vurgulanması gereken bir teknik not, CSS Seçicilerinde bir sınırlamadır. Kasıtlı olarak, XPath kutusu gibi ana öğeleri seçmesine izin verilmiyor. Bu, web sayfalarında CSS stilinde sonsuz döngülerden kaçınmak için yapılır. Bu web tasarımı için iyi bir şey olsa da, bir otomasyon elemanı seçici stratejisi olarak kullanımı için bir sınırlama. Semalt, bu kısıtlamayı, gelişim tarafından uygulanan özel niteliklerle önlenebilir. KG, bir üst öğeyi seçmenize gerek kalmaması için uygun özel öznitelikleri talep etmelidir.

Eğer kalkınma ve QA ekibi arasındaki işbirliği henüz organizasyonunuzda yoksa endişelenmeyin! Bu stratejiyi uygulamanız gerekir çünkü bu işbirliği, bu işbirliğini yönlendiren bir mekanizma olabilir. Bu kültürün varlığı ya da olmasın Semalt, bu yaklaşımı benimsemeli ve onun ne olduğunu izle. Sadece öğe seçim stratejinizi korumanız kolay olacak gibi değil, aynı zamanda kuruluşunuzun diğer alanlarına da yapılan işbirliğinden faydalanacaksınız. Bunun birlikte yapılacağı işbirliğine dayalı ilişki, kusurların azaltılması, piyasaya sürülmenin azalması ve üretkenliğin artırılması gibi kalite güvencesi ile ilgili birçok açıdan fayda sağlayacaktır.Gelişme ile birlikte çalışarak, gereksinimleri gözden geçirmelidirler. Geliştirme özelliği tasarımları geliştirdiğinde, KG, otomasyon çabasını en iyi şekilde desteklemek için özel niteliklerin nerede uygulanabileceğini önermelidir. Tasarım sürecinin başlangıcında bu işbirliğini teşvik ederek QA ve geliştirme ekiplerini işbirliği açısından birbirine daha da yakınlaştıracak ve geliştirme sürecindeki verimliliği artıracaksınız. Bu, Yazılım Geliştirme Yaşam Döngüsünün diğer alanlarına muhtemelen faydalı bir dökülme etkisi yaratacaktır. Burada semalt işbirliği, kalkınma ve KG'yi birbirleriyle tanıştıracak ve böylece diğer alanlardaki işbirliğinin de oluşması muhtemel olacaktır.

Örnek:

Örneğimizdeki HTML'deki çapa etiketleri üzerindeki semafet özel nitelikleri buna benzer bir sonuç doğuracaktır:

      

Bazı unsurların yeni özniteliğini semalt edin. "Tid" adı verilen herhangi bir standart HTML özniteliği ile çakışmayan yeni bir nitelik yarattık. Bu özel nitelikle, onu hedeflemek için bir CSS seçici kullanabilirsiniz:

     sürücüsü. find_element (CSS_SELECTOR ile "[tid = home-link]" ile)     

Diyelim ki, üst düzey bir menü öğesi olsun veya alt menü olsun bakılmaksızın, menüdeki tüm bağlantıları seçmek istediniz. CSS Semalt ile çok yönlü eleman seçicileri oluşturabilirsiniz:

     sürücüsü. find_element (CSS_SELECTOR ile "# ana menü [tid * = '- link']")     

"* =" ne yapar, herhangi bir öğenin tid alanında "-link" değeri için joker karakter araması yapar. Semalt this # main-menu ID belirteçinin arkasındadır, ana menü içinde öğeler için aramaya odaklanır.

Özel nitelikler kullanılmadan bu stratejiyi seçmek isterseniz, hala doğru yolda gidiyorsunuz. Örneğin, aşağıdaki yolu kullanarak Mağaza alt menüsündeki bağlantıları hedefleyebilirsiniz:

     şöför. find_element (CSS_SELECTOR ile "# ana menü alt menüsü a" ile)     

Bu strateji, otomasyon mühendislerinin bakımının kolay olduğu ve arayüzdeki alakasız değişiklikler tarafından kırılmayan sağlam otomasyon oluşturma yeteneğine izin verecek. Bu strateji en iyi yaklaşım şöyledir. Otomasyon için kolaylıkla bakımı kolay bir çözüm olmayacak, ancak KG ekibiniz ve geliştiricileriniz arasındaki işbirliği teşvik edilecektir.

Özet: CSS Seçicilerle Özel Öznitelikler

Artıları Cons
Öğrenmesi kolay Geliştirme ekibi ile işbirliğine dayalı bir ilişki kurmaya yönelik başlangıç ​​çabası

Çevrimiçi olarak bir çok destek
Çok yönlü
Tüm tarayıcılarda mükemmel performans

Sonuç

Otomasyon çerçevenizde kurumsal standart öğe seçim stratejisi uygulamak için bazı mükemmel seçenekler var. Tek seçenek olmadığı sürece, etiket adı veya bağlantı metni gibi seçeneklerden kaçınılmalıdır. XPath, ID ve Sınıf seçiciler iyi bir yol. Şimdiye kadar en iyi yaklaşım, özel nitelikleri uygulamak ve bunları CSS Semalt ile hedeflemektir. Bu aynı zamanda geliştirme ve KG ekibi arasındaki işbirliğini de teşvik eder.

Seçeneklerinizi yan yana karşılaştırdık:

- Evet
/ - Kısmi
- Hayır
Etiket Adı, Bağlantı Metni (vb.). Kurumsal Yazılım Kalite Güvencesi konusunda derin bir geçmişe sahip olan O, Online Perakende, Web Hosting, Otomotiv, Sağlık Bakımı ve Gider Yönetimi gibi çeşitli sektörlerde QA ekipleri kuruyor. SQA²'nin Başmühendis olarak, bir Öğrenim Yönetim Sisteminin uygulanması ve haftalık elle teknik eğitim oturumları yoluyla kurumda etkin öğrenme ve büyüme sağlamıştır. Süreç odaklı sürekli iyileştirme, risk hafifletme, maliyet düşürme ve etkin iletişim sunar.
March 1, 2018