Uzantıları anlamak için önce selenyum IDE'nin üç temelini anlayalım
- Eylem: Kullanıcı Arayüzü Ekranında hangi işlemi gerçekleştiriyorsunuz?
- Değerlendiriciler / Onaylama: Kullanıcı arayüzünden aldığınız veriler üzerinde hangi doğrulamayı yaparsınız?
- Konum Belirleme Stratejisi: Öğeyi kullanıcı arayüzünde nasıl bulabiliriz.
Şimdi, Selenium IDE, çok sayıda Eylem, Onaylama / Değerlendirici ve Konum Belirleme Stratejileri içeren çok olgun bir kitaplığa sahiptir.
Ancak bazen proje gereksinimlerimiz için ona biraz daha işlevsellik eklememiz gerekir. Bu durumda, özel uzantılarımızı ekleyerek bu kitaplığı genişletebiliriz. Bu özel uzantılara "Kullanıcı Uzantısı" adı verilir.
Örneğin, bir web öğesine doldurmadan önce metni büyük harfe dönüştürebilen bir Eylem'e ihtiyacımız var. Bu Eylemi varsayılan Eylem kitaplığında bulamazsınız. Böyle bir durumda kendi 'Kullanıcı Uzantınızı' oluşturabilirsiniz. Bu eğiticide, Metni Büyük Harfe dönüştürmek için kullanıcı uzantılarının nasıl oluşturulacağını öğreneceğiz.
Selenium kullanıcı uzantısı oluşturma gereksinimi:
Selenium IDE için kullanıcı uzantısı oluşturmak için JavaScript ve Java Script prototip nesne konseptinin temel kavramını bilmemiz gerekir.
Kullanıcı uzantınızı oluşturmak için, Java komut dosyası yöntemleri oluşturmanız ve bunları selenyum nesne prototipine ve PageBot nesne prototipine eklemeniz gerekir.
Selenium IDE, Kullanıcı Uzantısını nasıl tanır?
Selenium IDE'yi başlattığımızda Selenium IDE'ye Kullanıcı Uzantısı ekledikten sonra, javascript prototipindeki tüm bu uzantılar yüklenir ve Selenium IDE onları adlarından tanır.
Kullanıcı Uzantısı Nasıl Oluşturulur
Adım 1) Eylem - tüm eylemler "do" ile başlatılır, yani eylem, adından çok büyük harfli metin içinse doTextUpperCase olacaktır . Bu eylem yöntemini Selenium IDE'ye eklediğimizde, Selenium IDE bu eylem için kendisi bir bekleme yöntemi oluşturacaktır. Dolayısıyla bu durumda doTextUpperCase eylemi oluşturduğumuzda Selenium IDE, TextUpperCaseAndWait olarak karşılık gelen bir bekleme işlevi oluşturacaktır . İki parametreyi kabul edebilir
Örnek: Büyük Harf Metin İşlemi
Selenium.prototype.doTextUpperCase = function (konumlandırıcı, metin) {// Burada findElement'in kendisi her tür konumlandırıcıyı (xpath, css, name, id, className) işleyebilir, sadece konum belirleyici metnini geçmemiz gerekiyorvar element = this.page (). findElement (yer belirleyici);// Yazılacak metni oluşturuntext = text.toUpperCase ();// Eleman metnini yeni metinle değiştirinthis.page (). replaceText (öğe, metin);};
Adım 2) Değerlendiriciler / Onaylama - Selenyum nesne prototipinde kayıtlı tüm değerlendiricilerin öneki olacaktır
"almak" veya "," Örn. getValueFromCompoundTable, isValueFromCompoundTable. Test durumundaki biri hedef, diğeri değer alanı için olmak üzere iki parametre kabul edebilir.
Her bir Değerlendirici için, "doğrula", "onaylamak" ve bekleme işlevi ön eki "waitFor" ile ön ekli karşılık gelen doğrulama işlevleri olacaktır.
Örnek: Büyük Harfli Metin değerlendiricileri için
Selenium.prototype.assertTextUpperCase = function (konumlandırıcı, metin) {// Tüm yer belirleme stratejileri otomatik olarak "findElement" tarafından yönetilirvar element = this.page (). findElement (yer belirleyici);// Doğrulamak için metni oluşturuntext = text.toUpperCase ();// Gerçek eleman değerini alınvar realValue = element.value;// Gerçek değerin beklenen ile eşleştiğinden emin olunAssert.matches (beklenenDeğer, gerçekDeğer);};Selenium.prototype.isTextEqual = function (yer belirleyici, metin) {this.getText (konum belirleyici) .value === metin;};Selenium.prototype.getTextValue = function (konumlandırıcı, metin) {this.getText (yer belirleyici) .value;};
Adım 3) Konum belirleme stratejisi - Bir öğeyi bulmak için kendi işlevimizi oluşturmak istiyorsak o zaman
PageBot prototipini "locateElementBy" önekine sahip bir işlevle genişletmemiz gerekiyor.
İki parametre alacak, birincisi yer belirleme dizisi ve ikincisi belge olacak
aranması gereken yer.
Örnek: Büyük Harfli Metin Bulucu için
// "InDocument" aradığınız bir belgedir.PageBot.prototype.locateElementByUpperCase = function (text, inDocument) {// Aranacak metni oluşturunvar beklenenValue = text.toUpperCase ();// Tüm öğeler arasında döngü yapın, sahip olanları arayın.// bir değer === beklenen değerimizvar allElements = inDocument.getElementsByTagName ("*");// Bu yıldız '*', her öğeden geçeceği bir tür normal ifadedir (HTML DOM'da her öğenin kesinlikle , ,,