efficient selenium scripting
Önceki eğitimde, teknik çıkarımları tartıştık bir çerçevede günlük kaydı uygularken . Biz tartıştık log4j yardımcı programı uzunluğunda. Log4j'yi oluşturan temel bileşenleri kullanılabilirlik açısından tartıştık. Ekler ve düzenlerle, bir kullanıcı, istenen günlük biçimini / modelini ve veri kaynağını / konumunu seçmek için kullanılır.
Bu konudaki mevcut 27. öğreticide kapsamlı ücretsiz çevrimiçi selenyum eğitim serisi odak noktamızı birkaç önemsiz henüz önemli konular bu, bazı tekrarlayan sorunları gidermemize rehberlik eder. Bunları günlük kodlamada kullanabiliriz veya kullanmayabiliriz, ancak uzun vadede yardımcı olurlar.
Yapardık Fare ve klavye olaylarını ele alacağımız, listeleri uygulayarak birden çok bağlantıya erişeceğimiz bazı gelişmiş kavramları tartışın . Öyleyse neden bu konuları uygun senaryolar ve kod parçacıkları yardımıyla başlayıp kısaca tartışmayalım.
Windows 10 için en iyi mp3 indirici
Ne öğreneceksin:
- JavaScript Yürütücüleri
- Bir Listedeki birden çok öğeye erişim
- Klavye ve fare olaylarını işleme
- Sonuç
- Önerilen Kaynaklar
JavaScript Yürütücüleri
Bir test senaryosunu otomatikleştirirken, test komut dosyalarının doğal bir parçası haline gelen belirli eylemler vardır.
Bu eylemler şunlar olabilir:
- Bir düğmeyi, köprüyü vb. Tıklama
- Bir metin kutusuna yazmak
- İstenilen nesne görünene kadar Dikey veya Yatay olarak kaydırma
- Ve daha fazlası
Şimdi, bu tür eylemleri otomatikleştirmenin en iyi yolunun Selenium komutlarını kullanmak olduğu daha önceki eğitimlerden anlaşılıyor.
Peki ya selenyum komutları işe yaramazsa?
Evet, çok temel ve temel Selenium Komutlarının belirli durumlarda çalışmaması kesinlikle mümkündür.
Bununla birlikte, bu tür bir durumu giderebilmek için, JavaScript çalıştırıcılarını resmin içine dahil ediyoruz.
JavaScript Yürütücüleri nedir?
JavascriptExecutor arayüzü org.openqa.selenium'un bir parçasıdır ve java.lang.Object sınıfını uygular. JavascriptExecutor, JavaScript'i doğrudan web tarayıcısı içinde çalıştırma yeteneklerini sunar. JavaScript'i çalıştırabilmek için, uygulamasında belirli bir dizi parametre ile birlikte yöntemler biçiminde belirli mekanizmalar sağlanır.
Yöntemler
executeScript (Dize betiği, args)
Yöntem adından da anlaşılacağı gibi, JavaScript'i geçerli pencere, uyarı, çerçeve vb. (WebDriver örneğinin şu anda odaklandığı pencere) içinde yürütür.
executeAsyncScript (Dize betiği, args)
Yöntem adından da anlaşılacağı gibi, JavaScript'i geçerli pencere, uyarı, çerçeve vb. (WebDriver örneğinin şu anda odaklandığı pencere) içinde yürütür.
Parametreler ve import ifadesi, her iki yürütme yöntemi için ortaktır.
Parametreler
Komut Dosyası - yürütülecek komut dosyası
Bağımsız değişken - betiğin yürütülmesi için ihtiyaç duyduğu parametreler (varsa)
İçe aktarma beyanı
JavascriptExecutors test betiklerimizde kullanabilmek için, paketi aşağıdaki sözdizimini kullanarak içe aktarmamız gerekir:
import org.openqa.selenium.JavascriptExecutor;
Basit kod
# 1) Bir web öğesini tıklama
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments(0).click();', element);
# 2) Bir Metin Kutusuna Yazma
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Web öğesi görünümde olana kadar aşağı kaydırma
WebElement element=driver.findElement(By.xpath('//input(contains(@value,'Save'))')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments(0).scrollIntoView(true);',element);
JavascriptExecutors'a erişmek için kod yazmanın çeşitli başka yollarını bulabilirsiniz.
Bir Listedeki birden çok öğeye erişim
Zaman zaman, sıralı veya sırasız bir listede düzenlenmiş birden çok köprü, resim vb. Gibi aynı türden öğelerle karşılaşabiliriz. Bu nedenle, bu tür öğelerle tek bir kod parçasıyla uğraşmak mutlak anlamlıdır ve bu WebElement Listesi kullanılarak yapılabilir. Bahsettiğim unsurları anlamak için aşağıdaki ekran görüntüsüne bakın.
Yukarıdaki görselde çeşitli servis sağlayıcıların sırasız bir listeye ait olduğunu görüyoruz. Bu nedenle, bu öğelerin tıklanabilirliği ve görünürlüğünün doğrulanması, bir öğe listesi kullanılarak tek bir kod parçasıyla yapılabilir.
İçe aktarma beyanı
Test komut dosyalarımızda bir WebElement listesi kullanabilmek için, paketi aşağıdaki sözdizimini kullanarak içe aktarmamız gerekir:
import java.util.List;
en iyi dvd kopyalama yazılımı nedir
Basit kod
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div(@id='ServiceProvider')//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; iListelerin, öğeleri uygun uygulama değişiklikleri ile doğrulamak için kullanılabileceği çeşitli gereksinimler vardır.
Klavye ve fare olaylarını işleme
Klavye Olaylarını Yönetme
Daha önce de belirtildiği gibi, aynı problem ifadesini farklı bağlamlarda ele almanın n sayıda yolu vardır.
Bu nedenle, zaman zaman geleneksel işlem stratejisini daha gelişmiş bir strateji ile değiştirerek bir sorunu çözme zorunluluğu doğar. Selenyum komutlarıyla uyarılarla başa çıkamadığım ve açılır vb. Durumlara tanık oldum, bu nedenle klavye vuruşlarını ve fare olaylarını kullanarak bununla başa çıkmak için farklı java araçlarını tercih etmek zorunda kaldım.
Robot sınıfı, klavye olaylarını ve fare olaylarını gerçekleştirmek için böyle bir seçenektir.
Konsepti bir senaryo ve uygulamasıyla anlayalım.
Senaryo:
Uyarı Arayüzü kullanılarak kabul edilemeyen veya kapatılamayan ekranda gereksiz bir açılır pencerenin göründüğü bir durumu toplayalım, bu nedenle elimizde kalan tek akıllıca seçenek, kısayol tuşlarını kullanarak pencereyi kapatmaktır - 'Alt + boşluk tuşu + C' . Robot Sınıfı kullanarak açılır pencereyi nasıl kapattığımızı görelim.
Uygulamaya geçmeden önce, Robot sınıfını test scriptimizde kullanabilmek için gerekli paketi içe aktarmalıyız.
İçe Aktarma Beyanı
import java.awt.Robot;
Basit kod
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
Robot sınıfı, fare olaylarını işlemek için de kullanılabilir, ancak burada selenyumun fare olaylarını işleme yeteneklerine bakalım.
Fare Olaylarını Yönetme
WebDriver, kullanıcının fare ve klavye olaylarını otomatikleştirmek için yararlanabileceği çok çeşitli etkileşim araçları sunar. Eylem Arayüzü, tek kullanıcı etkileşimlerini simüle eden böyle bir yardımcı programdır.
Böylece, bir açılır menüde fareyle üzerine gelindiğinde Eylem Arayüzüne tanık oluruz ve ardından sonraki senaryoda bir seçenek listesi açar.
Senaryo:
- Açılır menüde Fare Üzerine Gelme
- Liste seçeneklerindeki öğelerden birine tıklayın
İçe Aktarma Beyanı
import org.openqa.selenium.interactions.Actions;
Basit kod
excel'de bir xml dosyası açın
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
Sonuç
Bu eğiticide, verimli komut dosyası oluşturma ve kullanıcının fare ve klavye olaylarını işlemesi gereken senaryolarda sorun giderme ile ilgili bazı gelişmiş konuları tartıştık. Bir listede birden fazla web öğesinin nasıl saklanacağını da tartıştık. Umarım karşılaşılırsa bu engelleri giderebilirsiniz.
Sonraki Eğitim # 28 : Dizide yakında çıkacak eğitim için, Selenium WebDriver kullanarak Veritabanı testi kavramı . Veritabanı bağlantı mekanizmasına, selenyum sorgularına çarpmaya ve Selenium WebDriver Kodu ile sonuçları getirmeye şahit olurduk.
Önerilen Kaynaklar
- Selenium WebDriver'a Giriş - Selenium Eğitimi # 8
- Günlüklerle Selenium Komut Dosyalarında Hata Ayıklama (Log4j Eğitimi) - Selenium Eğitimi # 26
- 30+ En İyi Selenyum Öğreticisi: Gerçek Örneklerle Selenyum Öğrenin
- Salatalık Selenium Eğitimi: Salatalık Java Selenium WebDriver Entegrasyonu
- Selenium Komut Dosyaları Oluşturmak İçin Chrome ve IE Tarayıcılarda Öğeler Nasıl Bulunur - Selenium Tutorial # 7
- İlk WebDriver Komut Dosyamızın Uygulanması - Selenium WebDriver Eğitimi # 10
- Eclipse ile WebDriver Tam Kurulum ve Kurulum - Selenium Eğitimi # 9
- Jenerikler ve Test Takımları Oluşturma - Selenium Eğitimi # 22