Selenium Çekirdek Uzantılar (User-Extensions.js)

⚡ Akıllı Özet

Selenium Çekirdek uzantıları, diğer adıyla kullanıcı uzantıları, özel eylemler, erişimciler ve konum belirleme stratejileri ekler. Selenium IDE'ye ekleyerek JavaKomut dosyası işlevleri şunlara yöneliktir: Selenium IDE başlatıldığında PageBot prototip nesneleri de oluşturulur.

  • 🔘 Üç temel unsur: Her Selenese komutu bir eylem, bir erişimci veya iddia ya da bir konum belirleme stratejisidir.
  • ☑️ Adlandırma kuralları: Eylemler `do` ile başlar, erişimciler `get` veya `is` ile, konum belirleyiciler ise `locateElementBy` ile başlar.
  • ✅ Ücretsiz bekleme komutu: doTextUpperCase'i kaydetmek, IDE'nin textUpperCaseAndWait'i otomatik olarak oluşturmasını sağlar.
  • 🧪 Yükleme mekanizması: IDE, başlangıçta user-extensions.js dosyasını okur, bu nedenle her düzenlemeden sonra aracın yeniden başlatılması gerekir.
  • ️ Eski statü: Selenium Çekirdek ve Firefox-IDE eklentisi kullanımdan kaldırıldı ve Selenium 3. Kullanıcı uzantısı desteği JAR dosyalarından kaldırıldı.
  • 📊 Modern rota: Mevcut tarayıcı uzantısı IDE'si, bunun yerine bir eklenti bildirim dosyası ve bir komut dosyası yürütme komutu sunmaktadır.

Selenium Çekirdek uzantıları ve user-extensions.js dosyası

Selenium Çekirdek Uzantılar

Uzantıları anlamak için öncelikle üç temel ilkeyi anlayalım. Selenium IDEIDE'de kaydettiğiniz veya yazdığınız her komut aşağıdaki üç kategoriden birine aittir ve her ekran görüntüsü, o kategorinin IDE komut listesinde nasıl göründüğünü gösterir.

  1. Eylem: Kullanıcı arayüzü ekranında hangi işlemi gerçekleştiriyorsunuz?

    Selenium IDE komut listesi, tıklama ve yazma gibi eylem komutlarını gösterir.

  2. Değerlendiriciler / İddia: Kullanıcı arayüzünden aldığınız veriler üzerinde hangi doğrulama işlemlerini gerçekleştiriyorsunuz?

    Selenium IDE erişim ve doğrulama komutları, `get`, `is`, `verify` ve `assert` önekleriyle başlar.

  3. Konum Belirleme Stratejisi: Kullanıcı arayüzünde öğeyi nasıl bulursunuz?

    Selenium IDE hedef kutusu listeleme konum belirleme stratejileri arasında id, name, css ve xpath bulunur.

Selenium IDE, halihazırda çok sayıda işlem, erişim yöntemi, doğrulama ve konum belirleme stratejisi içeren olgun bir kütüphane ile birlikte gelir.

Ancak bazen bir projenin, o kütüphanede bulunmayan bir işlevselliğe ihtiyacı olur. Bu durumda, kendi özel uzantınızı ekleyerek kütüphaneyi genişletebilirsiniz. Bu özel uzantılara özel eklenti denir. kullanıcı uzantısı.

Örneğin, bir web öğesine yerleştirmeden önce metni büyük harfe dönüştüren bir eyleme ihtiyacınız olduğunu varsayalım. Varsayılan kütüphanede böyle bir eylem bulunmadığından, kendi kullanıcı uzantınızı oluşturmanız gerekir. Bu eğitimde, metni büyük harfe dönüştüren bir kullanıcı uzantısı oluşturmayı öğreneceksiniz.

⚠️ Başlamadan önce: Burada açıklanan iş akışı şunlara aittir: Selenium Çekirdek ve orijinal Firefox-Eklenti Selenium IDE. Selenium Çekirdek kullanımdan kaldırıldı ve kullanıcı eklentisi desteği de sonlandırıldı. Selenium kavanozlarda Selenium 3. Aşağıdaki adımlar ve kodlar korunmuştur çünkü çok sayıda eski Selenese paketi hala bunlara bağımlıdır; modern alternatifleri bu makalenin ilerleyen bölümlerinde açıklanmıştır.

Oluşturma Gereksinimi Selenium Kullanıcı Uzantısı

Kullanıcı uzantısı oluşturmak için Selenium IDE için temel kavramlara ihtiyacınız var. JavaSenaryo ve özellikle JavaKomut dosyası prototip nesnesi. Aşağıdaki diyagram, bir kullanıcı uzantısının bağlandığı iki prototip nesnesini göstermektedir.

Diyagramı Selenium Kullanıcı uzantısı tarafından kullanılan prototip ve PageBot prototip nesneleri

Kullanıcı uzantınızı oluşturmak için şunu yazarsınız: JavaKomut dosyası yöntemlerini ekleyin ve bunları şuraya ekleyin: Selenium nesne prototipine ve PageBot nesne prototipine.

Ne kadar Selenium IDE, Kullanıcı Uzantısını Tanıyor

Kullanıcı uzantısı eklendikten sonra Selenium IDE başlatıldığında, üzerinde kayıtlı her fonksiyon çalışır hale gelir. JavaKomut dosyası prototipleri yüklendi ve Selenium IDE, her birini adıyla tanır. Bu nedenle, sonraki bölümdeki adlandırma önekleri bir stil seçimi değil, IDE'nin komutunuzu sınıflandırma şeklidir.

Kullanıcı Eklentisi Nasıl Oluşturulur?

Adım 1) Eylem – tüm eylemler şununla başlar: doEğer işlem metni büyük harfe dönüştürüyorsa, adı şudur: doTextUpperCaseBu eylem yöntemini eklediğinizde... Selenium IDE, kendisi eşleşen bir bekleme yöntemi oluşturur, bu nedenle doTextUpperCase aynı zamanda bekleme fonksiyonunu da üretir. metinBüyükHarfVeBekleBu yöntem iki parametre kabul edebilir.

Örnek: Büyük Harfli Metin Eylemi

Selenium.prototype.doTextUpperCase = function(locator, text) {
// Here findElement is itself capable to handle all type of locator(xpath,css,name,id,className), We just need to pass the locator text
var element = this.page().findElement(locator);

// Create the text to type
text = text.toUpperCase();

// Replace the element text with the new text
this.page().replaceText(element, text);
};

Adım 2) Değerlendiriciler / İddia – kayıtlı tüm erişimciler Selenium Nesne prototipleri şu ön ekle başlar: almak or isÖrneğin, getValueFromCompoundTable veya isValueFromCompoundTable gibi. Bir erişimci, test durumundaki hedef ve değer alanı için iki parametre alabilir. Aşağıdaki ekran görüntüsü, uzantı yüklendikten sonra bu öneklerin nasıl göründüğünü göstermektedir.

Selenium IDE, kullanıcı uzantısından oluşturulan get ve is erişim komutlarını gösteriyor.

Her bir aksesuar için, Selenium IDE, ilgili doğrulama işlevlerini önek ile birlikte oluşturur. doğrulamak hem de ileri sürmekartı başına bir bekleme fonksiyonu bekle.

Örnek: Büyük Harfli Metin Erişimcileri İçin

Selenium.prototype.assertTextUpperCase = function(locator, text) {
// All locator-strategies are automatically handled by "findElement"
var element = this.page().findElement(locator);

// Create the text to verify
text = text.toUpperCase();

// Get the actual element value
var actualValue = element.value;

// Make sure the actual value matches the expected
Assert.matches(expectedValue, actualValue);
};

Selenium.prototype.isTextEqual = function(locator, text) {
return this.getText(locator).value===text;
};

Selenium.prototype.getTextValue = function(locator, text) {
return this.getText(locator).value;
};

Adım 3) Konum belirleme stratejisi – Eğer bir öğeyi bulmak için kendi fonksiyonunuzu oluşturmak istiyorsanız, PageBot prototipini "function" önekiyle başlayan bir fonksiyonla genişletin. locateElementByBu fonksiyon iki parametre alır: konum belirleyici dize ve öğenin aranacağı belge.

Örnek: Büyük Harfli Metin Bulucu için

// The "inDocument" is a document you are searching.
PageBot.prototype.locateElementByUpperCase = function(text, inDocument) {
// Create the text to search for
var expectedValue = text.toUpperCase();

// Loop through all elements, looking for ones that have
// a value === our expected value
var allElements = inDocument.getElementsByTagName("*");
// This star '*' is a kind of regular expression it will go through every element (in HTML DOM every element surely have a tag name like<body>,<a>,<h1>,<table>,<tr>,<td> etc. ). Here our motive is to find an element which matched with the Upper Case text we have passed so we will search it with all elements and when we get match we will have the correct web element.
for (var i = 0; i < allElements.length; i++) {
var testElement = allElements[i];
if (testElement.innerHTML && testElement.innerHTML === expectedValue) {
return testElement;
}
}
return null;
};

Üç fonksiyonun tamamını tek bir dosyaya kaydedin. kullanıcı-uzantıları.jsDosya sade. JavaBetik dosyası olduğu için herhangi bir metin düzenleyici yeterlidir.

Yeni Oluşturulan Çekirdek Eklentisini Nasıl Kullanabilirsiniz?

Orijinalinde dosya yükleme dört adımdan oluşan bir işlemdir. Firefox-IDE eklentisi. Aşağıdaki her ekran görüntüsü, yanındaki numaralı adıma karşılık gelir.

  1. MyCAD'de yazılım Güncelleme ye git Selenium IDE ve tıklayın Seçenekler -> Seçenekler…

    Selenium IDE Seçenekleri menüsü, Seçenekler iletişim kutusuna ulaşmak için açıldı.

  2. içinde Genel Bu bölümde, yeni oluşturulanın konumunu seçin. Selenium Çekirdek uzantısı.

    Selenium IDE Seçenekleri iletişim kutusunun Genel sekmesinde Selenium Çekirdek uzantıları dosya yolu alanı

  3. Tıkla OK ve yeniden başlat Selenium IDE.

    Onay istemi gösterildiğinde Selenium Uzantı dosyasını yüklemek için IDE yeniden başlatıldı.

  4. Uzantıyı komut listesinde bulabilirsiniz.

    Selenium IDE komut açılır menüsü, user-extensions.js dosyasından gelen yeni textUpperCase komutunu listeliyor.

Selenium Çekirdek Uzantıları vs Selenium IDE Uzantıları

Eski kaynaklarda bu iki terim birbirinin yerine kullanılsa da, farklı katmanları tanımlarlar ve özel mantığı nereye yerleştireceğinize karar verirken bu ayrım önemlidir.

Görünüş Selenium Çekirdek uzantısı Selenium IDE uzantısı
Uzantısı Oynatma sırasında kullanılan Selenese komut kütüphanesi. IDE uygulamasının kendisi
Dosya yüklendi kullanıcı-uzantıları.js Eski IDE'de user-extensions-ide.js, mevcut IDE'de ise bir eklenti bildirim dosyasıdır.
Tipik kullanım Yeni eylemler, erişimciler ve konum belirleme stratejileri Yeni menü öğeleri, paneller, formatlar ve kaydedici davranışı
Dokunulan nesneler Selenium.prototype ve PageBot.prototype IDE düzenleyici ve kaydedici API'leri
Koşular sırasında Test yürütme Yazma ve kayıt

Özetle, bir Core uzantısı bir testin yapabileceklerini değiştirirken, bir IDE uzantısı aracın yapabileceklerini değiştirir.

Modern Nasıl Selenium IDE, user-extensions.js dosyasının yerini alıyor.

MKS Firefox-Eklenti Selenium IDE, çalışmayı durdurduğunda Firefox WebExtensions mimarisine geçildi ve IDE, Chrome olarak yeniden yazıldı. Firefox ve Edge tarayıcı uzantısı. Bu yeniden yazma işlemi, yukarıda gösterilen Seçenekler alanını kaldırdı, bu nedenle user-extensions.js dosyasına işaret edecek bir yer yok. Desteklenen iki alternatif aynı işlevi görüyor.

  • Komut dosyasını çalıştırma komutu. Tek seferlik JavaKomut dosyasına bir tane ekleyin. komut dosyasını çalıştır or eşzamansız komut dosyasını yürüt Teste doğrudan müdahale edin ve sonucu bir değişkene kaydedin. Bu, küçük bir özel eyleme en yakın eşdeğerdir.
  • Bir eklenti. Tekrar kullanılabilir komutlar için, IDE'ye bir bildirim dosyası kaydeden bir tarayıcı uzantısı oluşturun. Bildirim dosyası, her yeni komutu bir kimlik, bir ad, isteğe bağlı bir tür ve dokümantasyon ile tanımlar ve ayrıca yeni konum belirleyicileri de tanımlayabilir.

Resmi açıklamada gösterildiği gibi, manifest dosyası IDE uzantısına bir mesaj gönderilerek kaydedilir. Selenium IDE eklentisi dokümantasyonu.

browser.runtime.sendMessage(SIDE_ID, {
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0",
commands: [
{ id: "textUpperCase", name: "text upper case" }
]
}
}).catch(console.error);

İsimlendirme disiplini geçiş sürecinde de korunuyor: bir eklenti komutu hala bir kez tanımlanıyor ve tıpkı bir Core uzantısı gibi her testte yeniden kullanılıyor.

Kullanılan Popüler Uzantılar ve Eklentiler Selenium IDE

Aşağıdaki eklentiler eski IDE'de en yaygın kullanılanlardı. Bunlardan bazıları, örneğin akış kontrolü ve başarısızlık durumunda ekran görüntüsü alma, artık mevcut IDE'ye entegre edilmiş durumda veya bakımı yapılan eklentiler olarak sunuluyor.

İsim Amaç
Favoriler Bir test paketini favori olarak işaretlemek ve tek tıklamayla çalıştırmak
Esnek Pilot X Flex tabanlı otomasyon için
FlexMonkium Adobe Flex tabanlı kayıt ve oynatma için test yapmak in Selenium IDE
Dosya Günlüğü Günlükleri bir dosyaya kaydetmek için
Akış kontrolü Test yürütme akışını kontrol etmek için
Öğeleri Vurgula Bir web kontrolünü vurgulamak için
örtük bekle Bir öğenin belirli bir süre boyunca beklenmesi
Başarısız Olduğunda Ekran Görüntüsü Başarısızlık durumunda ekran görüntüsü alın
Test Sonuçları Kurtarmak test durumu Tek tıklamayla test paketinin sonucu

eski SeleniumBu dosyaları barındıran merkez ofis indirme sayfası artık mevcut değil. Mevcut eklentiler ve IDE'nin kendisi şu adresten dağıtılıyor: Selenium IDE proje sitesi ve Chrome'dan, Firefox ve Edge eklenti mağazaları.

Atomic Cüzdanı indirin : Selenium Bu Eğitimde kullanılan Temel Uzantı

SSS

Geleneksel ad user-extensions.js iken, IDE düzeyindeki eklentiler user-extensions-ide.js adını kullanıyordu. Eski IDE herhangi bir yola işaret etmenize izin verdiğinden, bu ad katı bir gereklilikten ziyade bir gelenekti, ancak yine de...ping Bu, paylaşımlı süitlerin daha kolay tanınmasını sağlar.

Prototip fonksiyonları IDE yüklenirken yalnızca okunabilir durumdadır, bu nedenle başlatmadan sonra yapılan bir düzenleme göz ardı edilir. Dosyayı kaydedin, IDE'yi tamamen kapatın ve yeniden açın. JavaKomut dosyası sözdizimi hatası, dosyanın sessizce yüklenmesini de engelliyor.

Tarayıcı konsolunu açın ve IDE'yi yeniden başlatın, ardından dosyada bir ayrıştırma hatası olup olmadığını kontrol edin. Dosyanın en üstüne bir `console.log` satırı eklemek, tek tek işlevlerde hata ayıklamaya başlamadan önce dosyanın yüklenip yüklenmediğini doğrular.

Yalnızca "do" önekli sürümü yazıyorsunuz. Selenium IDE, aynı işlemi gerçekleştiren ve ardından sayfanın yüklenmesinin tamamlanmasını bekleyen AndWait varyantını sizin için otomatik olarak türetir. İşlem navigasyonu tetiklediğinde AndWait formunu kullanın.

Makine öğrenimi modelleri, yeni bir komut için temel şablonu oluşturabilir ve sayfa anlık görüntüsünden bir konum belirleme stratejisi önerebilir. Yapay zeka destekli konum belirleme onarımı da burada faydalıdır, çünkü özel bir locateElementBy fonksiyonu, işaretleme değiştiğinde bozulan kodun ta kendisidir.

Kısmen. Copilot bunu yeniden üretir. Selenium.prototype ve PageBot.prototype kalıpları eski depolarda yaygın olarak göründüğü için tercih edilir, ancak hiç var olmayan yardımcı yöntemler icat edebilir. Her önerilen çağrıyı, güvenmeden önce Selenese komut referansına göre kontrol edin.

Evet. PageBot.prototype üzerinde yalnızca locateElementBy fonksiyonunu içeren bir dosya geçerlidir. Yeni strateji daha sonra mevcut tüm komutlar için kullanılabilir hale gelir, böylece click, type ve assert komutlarının tümü bu strateji aracılığıyla öğeleri hedefleyebilir.

Selenium RC, sunucu anahtarı aracılığıyla kullanıcı uzantıları dosyasını kabul etti, ancak RC ve Selenium Çekirdekler çıkarıldı Selenium 3. WebDriver'da bunun eşdeğeri bir hook bulunmadığından, aynı mantık test çerçevesinde sıradan bir yardımcı metot olarak yazılır.

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