Ruby, Capibara ve Selenium ile otomatik web testi

Bu eğitici, bunların nasıl oluşturulabileceğini göstermeye odaklanmıştır. web sayfalarını otomatik olarak test etmek için projeler, YouTube sayfasına bir test örneği ile yüzeysel bir açıklamaya sahiptir. Bunu iyi anlamak için temel Ruby kavramlarına sahip olmanız gerekecek.

NotBu test Ubuntu 15.10'da başlatıldı, bu nedenle yürütülmesi için Linux kullanmanızı öneririm, ancak programların nasıl kurulacağını Windows'a koydum.

1. Gerekli gereksinimleri yükleyin


Ruby'ye ve değerli taşlarına ihtiyacımız var (Mac kullanıyorsanız, zaten yüklemiş olacaksınız).

Ruby'yi Windows'a Kurmak
Yükleyiciyi indirmek için aşağıdaki düğmeye tıklayın:

WINDOWS İÇİN RUBY İNDİR

İlk önce R'yi indirip kuruyoruz.uby yükleyici, (kurulumda Ruby'yi Windows PATH'e ekleme seçeneğini işaretlediğinizden emin olun), ardından geliştirme kiti, içeriğini C diskinde, oluşturmanız gereken bir klasöre çıkarın, buna Devkit diyorum, ancak istediğiniz gibi arayabilirsiniz (Aşağıdaki resme bakın).

Şimdi Windows cmd'sini açın ve aşağıdaki talimatları uygulayın:

 chdir C: \ Devkitruby dk.rb initruby dk.rb kurulum

Linux'ta Ruby kurulumu
En son sürümlerde Ruby'yi zaten yükledik, ancak her ihtimale karşı, koşmalısın:

 sudo apt-get kurulum rubysudo apt-get kurulum rubygems
[color = # a9a9a9] Yakut kurulumu [/ color]

Gerekli programların geri kalanını yükleyin (Tüm işletim sistemleri için geçerlidir)
İhtiyaç salatalık yüklemek, BDD gerçekleştirmemize yardımcı olan bir test aracıdır.

 mücevher yüklemek salatalık
Ayrıca ihtiyacımız var Capibara'yı kur, web sayfalarıyla etkileşime girmemize yardımcı olacak belirli bir dildir.
 gem yükleme kapibara
Ve sonunda zorundasın selenyum yüklemek, Capibara için bir sürücüdür, tarayıcının JavaScript motorunu kullanır ve testin görsel olarak nasıl geçtiğini görmemizi sağlar.
 gem yükleme selenyum-web sürücüsü
Biraz yavaş.

2. projeyi oluştur


Her şeyi kurduktan sonra projemizin yapısını oluşturacağız.

Aşama 1
Bir klasör oluşturalım, onu arayalım Test-Selenyum. İhtiyacımız olan tüm dosyaları içeren klasör olacak, bu nedenle onu projenin kök klasörü olarak kabul edebiliriz.

Adım 2
Klasörün içinde Test-Selenyum (kök klasör) adında bir klasör oluşturalım özellikleri. Bu, süreci yürütmek için ihtiyacınız olan her şeyi içerecektir.

Aşama 3
Özellikler klasörünün içinde 2 klasör daha oluşturuyoruz (adım_tanımları Y destek) ve ayrıca adlı bir dosya test.özellik.

4. Adım
step_definitions içinde bir Ruby dosyası oluşturacağız. step_Youtube.rb. ve şimdi destek klasörünün içinde adında başka bir Ruby dosyası oluşturacağız. env.rb.

Adım 5
test.feature dosyasını dolduruyoruz, resmi dilde yazılacak (Gherkin), herkesin anlayabileceği bir dilde geçmek istediğimiz testi tanımlar (Testin kendisi aşama kısmıdır, gerisi bir açıklamadır). İçeriği aşağıdaki gibidir:

 #dil: Karakteristiktir: youtube'a git Bir testçi olarak aramayı test etmek için youtube'a girmek istiyorum Her şeyin yolunda gidip gitmediğini bilmek için Senaryo: youtube'u test et Youtube sayfasında olduğum için "Metallica One" arattığımda girebilirim ve "https://www.youtube.com/watch?v=iT6vqeL-ysI" videosunu izleyin
Aşama bölümünde aksan veya garip karakterler kullanamayız ve değişkenler çift tırnak içine alınır (Ruby kodumuza aktarılan veriler olacaktır).

6. Adım
step_Youtube.rb dosyasının sırası, Testlerimizi geçecek olan Ruby kodudur, (Given, When, So) her işlevin bir satıra atıfta bulunduğu koda bakın, daha önce "değişkenleri" olanlar, .feature'daki her değişken için 1 parametre alır. ) , bunun için düzenli ifadeler kullanmak gerekir. Kodun altında.

 / youtube sayfasında olduğumdan beri $ / 'https://www.youtube.com/?hl=tr&gl=EN' adresini ziyaret edin end Ne zaman (/ "([^"] *) "$ için arama yapıyorum / ) do | search | fill_in 'search_query',: ile => search click_button 'Search' end Ardından (/ "([^"] *) "$ /) videosunu girip izleyebilirim | video | sonuçlar = tümü ('a') map {| a | a ['href']} değilse sonuçlar.include? (video) yükseltme "Video bulunamadı" ziyareti sonlandır (video) son
Bu kodda, ikinci fonksiyonda search_query'yi görebilirsiniz, icat etmediğim bu isim Youtube arama kutusunun sahip olduğu name niteliğidir.

Talimat: sonuçlar = tümü ('a') map {| a | bir ['href']}Yaptığı şey, sayfadaki tüm a öğelerinin bir listesini almak ve bu listeden href niteliklerinin değerlerini almak, bunları sonuç değişkeninde saklamak ve bu şekilde istediğimiz web olup olmadığını görebiliriz. Bu örnekte, şarkının ilk sayfada görünüp görünmediğine bağlı olacak, bu yüzden test görünmüyorsa kırmızı çıkacak ve her şey yeşil değilse, bir resim göstereceğim. çıktının sonu).

7. Adım
Son env.rb dosyasını dolduracağız, bu bir yapılandırma dosyasıdır, kullanılacak dili, sürücüleri vb. gösterecektir. Bu durumda Capibara ve Selenium kullanıyoruz.

 'capybara' gerektirir 'capybara / dsl' gerektirir Capybara.default_driver =: selenyum modülü Helpers def olmadan_resynchronize page.driver.options [: resynchronize] = false verim page.driver.options [: resynchronize] = true end end World (Capybara :: DSL, Yardımcılar)
İşte kodun var.

3. Projeyi çalıştırın


Zamanı projemizi yürütmek Youtube'u test etmek için.

Aşama 1
Bir terminal veya cmd açıyoruz ve daha önce oluşturduğumuz tüm projelerimizin olduğu Testing-Selenium klasörüne gidiyoruz.

Adım 2
Salatalık yazıp enter veriyoruz, Salatalık, .feature dosyaları için (bu durumda sadece 1 tane vardır) özellikler klasörüne ve bu .features'ın adımlarına (Ruby dosyaları) bakacaktır. Eğer doğruysa tarayıcının nasıl açıldığını ve testleri çalıştırmaya başladığını göreceğiz. Tanımlanmış Ruby fonksiyonlarınız yoksa, aşağıdaki resimdeki gibi adımların tanımlanmadığını gösteren bir ekran görünecektir:

Her şey yolunda giderse, aşağıdaki gibi bir ekrana sahip olacaksınız:

NotSize bir uyarı veriyorsa ve Windows'ta renk vermiyorsa bu depoyu ziyaret edin.

Daha hızlı bir test istiyorsanız, grafik arayüzü olmayan bir tarayıcıya (Phantomjs) ve Capibara için bir sürücü olan (Selenium ile aynı) Poltergeist'e ihtiyacınız olacak, ancak Phantomjs ile bağlantı kuruyor.

  • Poltergeist'i yükleyin:
     gem kurulum poltergeist
  • Phantomjs'yi yükleyin:
     gem install phantomjs

Tüm projeyi indirmek isterseniz bir zip ekliyorum (testin Ubuntu'da geçtiğini unutmayın):

Test-Selenium.zip 1.71K 167 İndirilenler

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.
wave wave wave wave wave