Değişkenleri, Yankıyı, Uyarıyı, Açılır Pencereyi işlemeyi depolayın Selenium IDE

⚡ Akıllı Özet

Komutları sakla Selenium IDE, çalışma zamanı değerlerini adlandırılmış değişkenlere kaydeder, echo komutu bunları günlüğe yazdırır ve özel bir komut ailesi uyarıları, onay iletişim kutularını ve birden fazla tarayıcı penceresi arasında geçişi yönetir.

  • 🔘 Bir değişken oluşturun: "store" komutu değeri alır. Target ve Value içindeki değişken adı.
  • ☑️ Tekrar okuyun: Komutun hedef veya değer kabul ettiği her yerde adı ${ } içine alın.
  • Hata ayıklama için yazdır: `echo` komutu, bir metin dizesini veya bir değişkeni doğrudan IDE günlüğüne yazar.
  • 🧪 Uyarılar otomatik olarak kabul edilir: IDE sizin için "Tamam"ı tıklıyor, bu nedenle mesaj metnini yakalamak için storeAlert'i kullanın.
  • Onay işlemleri için karar verilmesi gerekiyor: `chooseOkOnNextConfirmation` ifadesini, iletişim kutusunu açan komuttan önce yerleştirin.
  • 📊 Pencere değiştirme: `selectWindow` bir pencere başlığını hedefler ve `null` hedefi üst pencereye döner.

Değişkenleri saklama, yankı, uyarı ve açılır pencere işleme işlemlerini gerçekleştirme Selenium IDE

Bu eğitimde, store komutlarını, echo komutunu ve alert ve popup işlemlerini nasıl yöneteceğinizi öğreneceksiniz. Selenium IDEBu komutlar birlikte, önceden kaydedilmiş sabit bir betiği, uygulamanın çalışma zamanında döndürdüğü her şeye tepki veren bir betiğe dönüştürür.

⚠️ Sürümlerle ilgili bir not: Aşağıdaki ekran görüntüleri orijinalinden alınmıştır. Firefox-Eklenti Selenium IDE ve komutlar camelCase Selenese adlarını kullanır. Mevcut Chrome, Firefox Edge uzantısı da aynı davranışı koruyor ancak komut adlarının çoğunu boşluklarla yazıyor. Bir haritaping Tablo bu makalenin sonuna doğru yer almaktadır ve her orijinal komut ve ekran görüntüsü yayınlandığı gibi korunmuştur.

Selenium IDE Değişkenleri

mağaza

Değişkenleri saklamak için Selenium IDE'yi kullanıyoruz. mağaza Aşağıdaki örnekte gösterildiği gibi, komut "tutorial" değerini "myVariable" adlı bir değişkene kaydeder.

Selenium IDE, "tutorial" değerini myVariable değişkenine kaydederek komutu sakladı.

Değişkene erişmek için, onu ${ … } sembolü içine almanız yeterlidir. Örneğin, “myVariable” değişkeninin değerini “userName” metin kutusuna girmek için: Mercury Turlar, Değer alanına ${myVariable} girin.

Selenium IDE, userName metin kutusunun Değer alanında ${myVariable} kullanarak komut türünü belirtir.

Yankı Komutu Selenium IDE

Kaydedilmiş bir değişken, bir şey onu yazdırana kadar görünmezdir ve işte tam olarak bu yüzden görünmezdir. kaçırmak Bu komut, oynatma sırasında IDE günlük bölmesine bir mesaj yazar; bu da, üzerine doğrulama ifadeleri eklemeden önce, bir depolama komutunun beklediğiniz sonucu yakaladığını doğrulamanın en hızlı yoludur.

Komut her iki biçimi de kabul eder:

  • Kelime kelime bir dize. Metni şuraya yerleştirin: Target örneğin alan Giriş işlemi tamamlandıUzun bir metinde bir kontrol noktasını işaretlemek için.
  • Bir değişken. ${myVariable}'ı içine koyun Target Alan ve kaydedilen değer, isim yerine yazdırılır.

İki alışkanlık, echo komutunu ilk bakışta göründüğünden çok daha kullanışlı hale getiriyor. Bir değişkeni oluşturan store komutundan hemen sonra yazdırın, böylece bir hata oluşursa bu hata fark edilmez. tracYirmi adım sonraki doğrulamaya değil, yakalamaya odaklanın. Ve her mesajın başına ait olduğu adımı ekleyin, çünkü günlük bölmesi her komutu tek bir düz listede gösterir. Echo komutunun yalnızca günlüğe yazdığını, sayfayı asla değiştirmediğini ve hiçbir zaman bir testi başarısız kılmadığını unutmayın, bu nedenle bir betikte kalıcı olarak bırakmak güvenlidir.

StoreElementPresent

Bu komut, belirtilen öğenin varlığına bağlı olarak "true" veya "false" değerini saklar. Aşağıdaki kod, "true" Boolean değerini "var1" değişkenine, "false" değerini ise "var2" değişkenine kaydeder. Doğrulamak için, var1 ve var2 değişkenlerinin değerlerini görüntülemek üzere echo komutunu kullanacağız. Temel URL Aşağıdaki resim için ayar şu şekildeydi: Mercury Turlar ana sayfası.

Selenium IDE'nin storeElementPresent fonksiyonu, true değerini var1'e, false değerini ise var2'ye kaydediyor ve bu durum log dosyasına yazdırılıyor.

StoreText

Bu komut, bir öğenin iç metnini bir değişkene kaydetmek için kullanılır. Aşağıdaki örnekte, Facebook kayıt sayfasındaki h1 etiketinin iç metni "textVar" adlı bir değişkene kaydedilir.

Selenium IDE'deki storeText komutu, css=h1 kodunu textVar değişkenine okuyor.

Sayfada türünün tek örneği olduğu için, hedef olarak “css=h1” kullanmak güvenlidir. Aşağıdaki resim bunu göstermektedir. Selenium IDE, "Sign Up" dizesini "textVar" değişkenine kaydedebildi çünkü echo komutu değerini doğru bir şekilde yazdırdı.

Selenium IDE günlük bölmesinde "Kaydol" ifadesi, textVar'da saklanan değer olarak yazdırılıyor.

Uyarılar, Açılan Pencereler ve Çoklu Windows

Bildirimler muhtemelen açılır pencerelerin en basit biçimidir. En yaygın olanı Selenium Uyarıların işlenmesinde kullanılan IDE komutları şunlardır:

Uyarılar Kullanımlar

iddiaUyarı

iddiaNotAlert

Uyarı mesajını alır ve belirttiğiniz bir dize değeriyle karşılaştırır.

iddiaAlertPresent

iddiaAlertNotPresent

Bir uyarı olup olmadığını belirtir.
Mağaza Uyarısı Uyarı mesajını alır ve belirttiğiniz bir değişkene kaydeder.
mağazaAlertPresent Bir uyarı varsa TRUE, yoksa FALSE döndürür.

Doğrulama Uyarısı

DoğrulamaNotAlert

Uyarı mesajını alır ve belirttiğiniz dize değeriyle eşit olup olmadığını doğrular.

DoğrulamaAlertPresent

doğrulamaAlertNotPresent

Bir uyarı olup olmadığını doğrular.

Uyarılarla çalışırken şu iki şeyi unutmayın:

  • Selenium IDE, uyarı penceresindeki Tamam düğmesine otomatik olarak tıklar, bu nedenle gerçek uyarıyı göremezsiniz.
  • Selenium IDE, sayfanın onload() fonksiyonu içinde tetiklenen uyarıları işleyemez. Yalnızca sayfa tamamen yüklendikten sonra oluşturulan uyarıları işler.

Bu örnekte, storeAlert komutunu kullanarak, bir ürünün çalışır durumda olmasına rağmen, bir uyarı mesajı göstereceğimizi bildiriyoruz. Selenium IDE, uyarıyı ekranda göstermese de mesajı yine de almayı başardı.

) 1 Adım In Selenium IDE, Base'i ayarla URL http://jsbin.com adresine. Tamamı URL Bu, http://jsbin.com/usidix adresidir. Bu jsbin kod parçacıkları şu tarihten kalmadır: Firefox-Eklenti dönemi sona erdi ve artık çözümlenemeyebilir; uyarı veren bir düğme içeren herhangi bir sayfa aynı sonucu verir.

) 2 Adım Aşağıda gösterildiği gibi betiği oluşturun. Tıklama komutu "Git!" düğmesini hedef alır, storeAlert mesajı alertMessage'a yakalar ve echo bunu yazdırır.

Selenium jsbin uyarı demo sayfasına karşı click, storeAlert ve echo komutlarını içeren IDE betiği.

) 3 Adım Komut dosyasını çalıştırın ve gerçek uyarıyı görmeyi beklemeyin. Aşağıdaki günlük bölmesi, diyalog hiç görünmese bile yakalanan mesajı gösterir.

Selenium IDE günlüğü, oynatma sonrasında storeAlert tarafından alınan uyarı metnini göstermektedir.

Onaylar

Onaylar, yalnızca Tamam düğmesini veren uyarıların aksine, size Tamam ve İptal düğmelerini sunan açılır pencerelerdir. Onayları işlerken kullanabileceğiniz komutlar, uyarı komutlarıyla aynıdır.

  • Onaylama / Onaylamama
  • assertConfirmationPresent / assertConfirmationNotPresent
  • mağazaOnay
  • mağazaOnayMevcut
  • Doğrulama Onay / Doğrulama Değil
  • verifyConfirmationPresent / verifyConfirmationNotPresent

Ek olarak, bu komutlar şunları söyler: Selenium Tamam mı yoksa İptal mi düğmesini seçmelisiniz?

  • chooseOkOnNextConfirmation / chooseOkOnNextConfirmationAndWait
  • SonrakiOnayda İptal Et'i seçin

Bu komutları yerleştirin. önce Onay kutusunu tetikleyen komut, böylece Selenium IDE, hangi seçeneği seçeceğini önceden bilir. Tekrar belirtmek gerekirse, komut dosyası yürütülürken gerçek onay kutusunu görmeyeceksiniz.

Kullanıcının Tamam veya İptal düğmesine basıp basmadığını bildiren bir düğme içeren bir web sayfasını test edelim.

) 1 Adım In Selenium IDE, Base'i ayarla URL http://jsbin.com adresine. Tamamı URL http://jsbin.com/enifaf.

) 2 Adım Aşağıda gösterildiği gibi betiği oluşturun. Bu sefer önce Tamam düğmesine basacağız.

Selenium IDE betiği, iletişim kutusunu açan tıklamadan önce chooseOkOnNextConfirmation komutunu yerleştiriyor.

) 3 Adım Komut dosyasını çalıştırın ve gerçek onay mesajını görmediğinizi, ancak web sayfasının yine de hangi düğmeye basıldığını bildirdiğini fark edin. Selenium IDE'ye basıldı.

Onay iletişim kutusunun Tamam düğmesine basıldığını bildiren test sayfası.

) 4 Adım `chooseOkOnNextConfirmation` komutunu `chooseCancelOnNextConfirmation` ile değiştirin ve betiği tekrar çalıştırın. Sayfa artık ters seçeneği bildirecektir.

Selenium IDE betiği, chooseOkOnNextConfirmation yerine chooseCancelOnNextConfirmation kullanacak şekilde düzenlendi.

Çoklu Windows

Ayrı bir pencere açan bir bağlantıya tıklarsanız, öncelikle talimat vermeniz gerekir. Selenium IDE'de, içindeki öğelere erişmeden önce o pencereyi seçmeniz gerekir. Eski IDE'lerde, pencerenin başlığını konum belirleyici olarak kullanırsınız.

Pencereler arasında geçiş yapmak için selectWindow komutunu kullanıyoruz.

http://jsbin.com/ocinaj/1 bağlantısını kullanacağız, başlığı “İlk Pencere”. Bu sayfadaki “burada” bağlantısı Facebook'u yeni bir pencerede açıyor, ardından talimatları veriyoruz. Selenium Aşağıdakileri yapmak için IDE:

  • selectWindow komutunu pencere başlığını konum belirleyici olarak kullanarak, üst pencereden yeni açılan Facebook penceresine kontrolü aktarın.
  • Yeni pencerenin başlığını doğrulayın.
  • Hedef olarak “null” değerini kullanarak selectWindow komutuyla orijinal pencereyi tekrar seçin.
  • Şu anda seçili olan pencerenin başlığını doğrulayın.

Yukarıdaki plan, burada gösterilen dört adımlı sıraya dönüşmektedir.

Ana pencereden yeni pencereye ve tekrar ana pencereye geçişin şematik gösterimi.

) 1 Adım Tabanı Ayarla URL http://jsbin.com adresine.

) 2 Adım Komut dosyasını aşağıda gösterildiği gibi oluşturun.

Selenium IDE betiği, selectWindow, pause ve verifyTitle işlevlerini kullanarak iki pencere arasında geçiş yapar.

Yeni açılan pencerenin yüklenmesini beklemek için duraklatma komutuna ihtiyacımız var, ancak ondan sonra başlığını okuyabileceğiz.

) 3 Adım Komut dosyasını yürütün. Şuna dikkat edin: test durumu Başarılı oldu, yani pencereler arasında geçiş yapabildik ve başlıklarını başarıyla doğrulayabildik.

Yeşil geçiş sonucu Selenium Her iki pencere başlığı da doğrulandıktan sonra IDE

Her zaman şunu unutmayın: selectWindow hedefi olarak "null" değerini ayarlamak, otomatik olarak üst pencereyi seçer; bu durumda "link=here" öğesinin bulunduğu pencereyi seçer.

Not: Bu eğitim videosu oluşturulduktan sonra Facebook sayfa başlığını değiştirdi. Lütfen komut dosyasındaki beklenen başlığı buna göre değiştirin.

Modern Selenium Bu komutların IDE karşılıkları

MKS Firefox-IDE eklentisi kullanımdan kaldırıldı Firefox WebExtensions mimarisine geçildi ve mevcut Chrome, Firefox Edge uzantısı, Selenese komutlarının çoğunu aralıklı bir forma dönüştürdü. Davranış değişmedi, bu nedenle aşağıdaki tablo, yukarıdaki komut dosyalarını mevcut bir kurulumda okumak için ihtiyacınız olan her şeyi içeriyor.

Bu eğitimde eski komutlar kullanılmaktadır. akım Selenium IDE komutu
mağaza mağaza
kaçırmak kaçırmak
storeText depo metni
storeElementPresent Öğenin varlığını sakla (veya öğenin varlığını doğrula)
assertAlert / verifyAlert uyarıyı doğrula / uyarıyı doğrula
chooseOkOnNextConfirmation Sonraki onayda "Tamam"ı seçin.
SonrakiOnayda İptal Et'i seçin Sonraki onayda iptal seçeneğini seçin.
selectWindow (başlık hedef olarak) handle=${handle} olan pencereyi seçin

İki önemli farka dikkat çekmekte fayda var. Önceki makalede yer almayan istemlerin artık kendi komutları var: Sonraki soruya cevap verin Diyalog görünmeden önce yanıtı planlar ve webdriver görünür istemde yanıt veriyor Zaten açık olan bir komut istemine yazı yazılır. Ve pencere değiştirme artık sayfa başlığına bağlı değildir. Çalıştır mağaza vitrin kolu Önce tutamağı yakala, sonra geçir. tutamaç=${tutucunuz} Pencereyi seçmek için. Bu değişiklik, yukarıdaki notta açıklanan, bir sitenin sayfasını yeniden adlandırması ve komut dosyasının pencereyi bulmayı bırakması durumunu ortadan kaldırır. Resmi Selenium IDE proje sitesi Geçerli komut kümesinin tamamını listeler.

SSS

Evet. ${myVariable} ve ${myvariable} iki farklı değişkene atıfta bulunur ve hiç saklanmamış bir değişkene atıfta bulunmak, hata vermek yerine boş bir dizeye dönüşür. Sessiz boşluklardan kaçınmak için bir kod paketi genelinde tek bir adlandırma kuralı kullanın.

Evet. ${ } sözdizimi her durumda genişletilir. Target Veya Değer alanı, böylece açık bir komutun, bir XPath'in veya bir CSS seçicinin içinde çalışır. Kaydedilmiş bir komut dosyasının, çalıştırmanın önceki aşamalarında yakalanan verilerle yönlendirilen bir komut dosyasına dönüştürülmesi bu şekilde sağlanır.

Selenese'de matematiksel operatörler bulunmamaktadır. Bunun yerine, küçük bir değerle `execute script` komutunu kullanın. JavaDeğişkeni okuyan ve sonucu döndüren, ardından bu dönüş değerini saklayan bir komut dosyası ifadesi. Her saklanan değerin bir dize olarak geldiğini unutmayın, bu nedenle önce dönüştürün.

Bunları tek bir teste özgü yerel veriler olarak ele alın. Daha önceki bir test tarafından belirlenen bir değere güvenmek, test paketini sıraya bağımlı hale getirir ve hata ayıklamayı zorlaştırır; bu nedenle, bir testin ihtiyaç duyduğu şeyi o testin içinde saklayın veya başlangıçta bir veri dosyasından okuyun.

Bir istemde yalnızca düğme seçeneği değil, metin de bulunmalıdır. Yanıtı, istemi açan komuttan önce Değer alanına yazarak sonraki istemde yanıtla komutunu çalıştırın veya iletişim kutusu zaten ekranda olduğunda görünür istemde webdriver yanıtla komutunu kullanın.

Makine öğrenimi araçları, bir senaryonun düz dildeki açıklamasından bir komut dizisi önerebilir ve bir kaydedicinin ürettiğinden daha sağlam konum belirleyiciler sunabilir. Yapay zeka destekli konum belirleyici onarımı da yardımcı olur, çünkü yeniden adlandırılmış bir öğe, depolanan bir değerin boş dönmesinin olağan nedenidir.

Evet. Testi dışa aktarın. Java or PythonArdından Copilot'ın düz komut listesini sayfa nesnelerine ve yeniden kullanılabilir beklemelere dönüştürmesine izin verin. Uyarı işlemesini elle kontrol edin, çünkü oluşturulan kod genellikle IDE'nin zaten kapattığı görünür bir iletişim kutusunu varsayar.

Başlığa dayalı seçim belirsiz hale gelir ve yanlış pencere seçilebilir. İşte bu yüzden mevcut IDE, tanıtıcıları tercih ediyor: pencere açıldıktan hemen sonra pencere tanıtıcısını kaydederek bir tane yakalayın, ardından handle=${yourHandle} ile geçiş yapın.

Bu yazıyı şu şekilde özetleyin: