implicit explicit wait selenium webdriver
Selenium WebDriver'da Örtülü ve Açık Beklemeyi Öğrenin:
Önceki eğitimde, sizi çeşitli konularla tanıştırmaya çalıştık. WebDriver'ın döngü ve koşullu işlemleri . Bu koşullu yöntemler genellikle web öğeleri için neredeyse tüm görünürlük seçenekleri ile ilgilenir.
Bunda ilerlemek ücretsiz Selenium eğitim serisi , tartışacağız Selenium WebDriver tarafından sağlanan farklı bekleme türleri . Ayrıca v hakkında da tartışacağız zorlu navigasyon seçenekleri WebDriver'da mevcuttur.
Bekler, kullanıcının tüm web sayfasını yenileyerek ve yenisini yeniden yükleyerek farklı web sayfalarına yeniden yönlendirirken sorunları gidermesine yardımcı olur. web öğeleri. Bazen Ajax aramaları da olabilir. Böylece web sayfalarını yeniden yüklerken ve web elemanlarını yansıtırken bir zaman gecikmesi görülebilir.
Kullanıcılar genellikle çeşitli web sayfalarında ileri geri gezinirken bulunur. Bu nedenle, WebDriver tarafından sağlanan navigate () komutları / yöntemleri, kullanıcının web tarayıcısının geçmişine referansla web sayfaları arasında gezinerek gerçek zamanlı senaryoları simüle etmesine yardımcı olur.
WebDriver, tekrar eden sayfa yükünün üstesinden gelmek için kullanıcıyı iki gen bekleme süresi ile donatır s, web öğesi yükleri, pencerelerin görünümü, açılır pencereler ve hata mesajları ve web öğelerinin web sayfasındaki yansımaları.
- Örtülü Bekleme
- Açık Bekleme
Pratik yaklaşımı göz önünde bulundurarak her birini ayrıntılı olarak tartışalım.
Ne öğreneceksin:
- WebDriver Örtülü Bekleme
- WebDriver Açık Bekleme
- Beklenen Durum
- WebDriver Kullanarak Gezinme
- Sonuç
- Önerilen Kaynaklar
WebDriver Örtülü Bekleme
Örtük beklemeler, tüm test komut dosyası boyunca ardışık her test adımı / komutu arasında varsayılan bir bekleme süresi (örneğin 30 saniye) sağlamak için kullanılır. Bu nedenle, sonraki test adımı yalnızca önceki test adımı / komutunun yürütülmesinden sonra 30 saniye geçtikten sonra yürütülecektir.
Önemli Notlar
- Örtük bekleme, bir kodun tek satırıdır ve test komut dosyasının kurulum yönteminde bildirilebilir.
- Açık bekleme ile karşılaştırıldığında, Örtük bekleme şeffaftır ve karmaşık değildir. Sözdizimi ve yaklaşım, açık beklemeden daha basittir.
Uygulanması kolay ve basit olan örtük bekleme birkaç dezavantajı da beraberinde getirir. Komutların her biri, yürütmeye devam etmeden önce öngörülen süre kadar beklemeye son verileceğinden, test betiği yürütme süresine yol açar.
Bu nedenle, bu sorunu gidermek için WebDriver, test adımlarının her birini yürütürken zorla beklemek yerine, durum ortaya çıktığında açıkça beklemeleri uygulayabileceğimiz Açık beklemeleri sunar.
İçe Aktarım İfadeleri
ithalat java.util.concurrent.TimeUnit - Test komut dosyalarımıza erişebilmek ve örtük bekleme uygulayabilmek için, bu paketi test komut dosyamıza aktarmamız gerekiyor.
Sözdizimi
drv .manage (). timeout (). örtük olarak Bekle (10, TimeUnit. SANİYE );
WebDriver örnek değişkeninin somutlaştırılmasından hemen sonra yukarıdaki kod satırını test komut dosyanıza ekleyin. Bu nedenle, test komut dosyanıza örtük bir bekleme ayarlamak için gereken tek şey budur.
Kod İzlenecek Yol
Örtük bekleme, iki değeri parametre olarak geçirmeyi zorunlu kılar. İlk bağımsız değişken, sistemin beklemesi gereken süreyi sayısal rakamlarla gösterir. İkinci argüman, zaman ölçüm ölçeğini gösterir. Dolayısıyla yukarıdaki kodda varsayılan bekleme süresi olarak “30” saniyeden bahsetmiştik ve zaman birimi “saniye” olarak ayarlanmıştır.
WebDriver Açık Bekleme
Belirli bir koşul karşılanana kadar veya maksimum süre geçene kadar yürütmeyi durdurmak için açık beklemeler kullanılır. Örtülü beklemelerin aksine, Açık beklemeler yalnızca belirli bir örnek için uygulanır.
WebDriver, test komut dosyalarına Açık beklemeleri zorlamak için WebDriverWait ve ExpectedConditions gibi sınıflar sunar. Bu tartışmanın kapsamında örnek olarak 'gmail.com' u kullanacağız.
Otomatikleştirilecek senaryo
- Web tarayıcısını başlatın ve 'gmail.com' u açın
- Geçerli bir kullanıcı adı girin
- Geçerli bir parola girin
- Oturum aç düğmesine tıklayın
- Sayfa yüklendikten sonra Oluştur düğmesinin görünmesini bekleyin
Açık beklemeyi kullanan WebDriver Kodu
Lütfen komut dosyası oluşturmak için, eski öğreticilerde oluşturulan 'Learning_Selenium' projesini kullanacağımızı unutmayın.
Aşama 1 : 'Learning_Selenium' projesi altında 'Wait_Demonstration' adlı yeni bir java sınıfı oluşturun.
Adım 2 : Aşağıdaki kodu kopyalayıp “Wait_Demonstration.java” sınıfına yapıştırın.
Aşağıda, yukarıda bahsedilen senaryoya eşdeğer olan test komut dosyası verilmiştir.
import static org.junit.Assert.*; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Wait_Demonstration { // created reference variable for WebDriver WebDriver drv; @Before public void setup() throws InterruptedException { // initializing drv variable using FirefoxDriver drv=new FirefoxDriver(); // launching gmail.com on the browser drv.get('https://gmail.com'); // maximized the browser window drv.manage().window().maximize(); drv.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } @Test public void test() throws InterruptedException { // saving the GUI element reference into a 'username' variable of WebElement type WebElement username = drv.findElement(By.id('Email')); // entering username username.sendKeys('shruti.shrivastava.in'); // entering password drv.findElement(By.id('Passwd')).sendKeys('password'); // clicking signin button drv.findElement(By.id('signIn')).click(); // explicit wait - to wait for the compose button to be click-able WebDriverWait wait = new WebDriverWait(drv,30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div(contains(text(),'COMPOSE'))'))); // click on the compose button as soon as the 'compose' button is visible drv.findElement(By.xpath('//div(contains(text(),'COMPOSE'))')).click(); } @After public void teardown() { // closes all the browser windows opened by web driver drv.quit(); } }
İçe Aktarım İfadeleri
- ithalat org. openqa.selenium.support.ui.ExpectedConditions
- ithalat org. openqa.selenium.support.ui.WebDriverWait
- Komut dosyası oluşturmadan önce yukarıdaki paketleri içe aktarın. Paketler, açılır listeyi işlemek için gerekli olan Select sınıfına atıfta bulunur.
WebDriverWait sınıfı için Nesne Örnekleme
WebDriverWait wait = yeni WebDriverWait ( drv , 30);
WebDriverWait sınıfı için bir referans değişkeni 'wait' oluşturuyoruz ve WebDriver örneğini ve yürütmenin işten çıkarılması için maksimum bekleme süresini kullanarak bunu başlatıyoruz. Belirtilen maksimum bekleme süresi 'saniye' cinsinden ölçülür.
WebDriver örneği, WebDriver'ın ilk öğreticilerinde tartışılmıştır.
Beklenen Durum
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div(contains(text(),'COMPOSE'))'))); drv.findElement(By.xpath('//div(contains(text(),'COMPOSE'))')).click();
Yukarıdaki komut, hangisi önce olursa veya geçerse, öngörülen bir süre veya beklenen bir koşulun oluşmasını bekler.
Bu yüzden bunu yapabilmek için, ExpectedConditions sınıfı ile bir önceki adımda oluşturulan WebDriverWait sınıfının “wait” referans değişkenini ve oluşması beklenen gerçek bir koşulu kullanıyoruz. Bu nedenle, beklenen koşul oluşur oluşmaz, program kontrolü 30 saniyenin tamamını zorla beklemek yerine bir sonraki yürütme adımına geçer.
Örneğimizde, ana sayfa yüklemesinin bir parçası olarak 'oluştur' düğmesinin bulunmasını ve yüklenmesini bekleriz ve böylece 'oluştur' düğmesindeki tıklama komutunu çağırarak ilerleriz.
Beklenen Koşul Türleri
ExpectedConditions sınıfı, gerçek test adımını yürütmeden önce bir koşulun oluşup oluşmadığını tespit etmemiz gereken senaryolarla başa çıkmak için büyük bir yardım sağlar.
ExpectedConditions sınıfı, WebDriverWait referans değişkeni ve until () yöntemi yardımıyla erişilebilen çok çeşitli beklenen koşullarla birlikte gelir.
Birkaçını uzun uzadıya tartışalım:
# 1) elementToBeClickable () - Beklenen koşul, bir öğenin tıklanabilir olmasını bekler, yani etkin olmasının yanı sıra ekranda mevcut / görüntülenebilir / görünür olmalıdır.
Basit kod
wait.until (ExpectedConditions.elementToBeClickable (By.xpath ( '// div (içerir (metin (),' OLUŞTUR '))' )));
# 2) textToBePresentInElement () - Beklenen koşul, belirli bir dizgi modeline sahip bir öğeyi bekler.
Basit kod
wait.until (ExpectedConditions.textToBePresentInElement (By.xpath ( '// div (@ id =' forgotPass ''),' bulunacak metin ' ));
ücretsiz bilgisayar optimizasyon araçları windows 10
# 3) alertIsPresent () - Beklenen koşul, bir uyarı kutusunun görünmesini bekler.
Basit kod
wait.until (ExpectedConditions.alertIsPresent ())! = null);
# 4) titleIs () - Beklenen koşul, belirli bir başlığa sahip bir sayfayı bekler.
Basit kod
wait.until (ExpectedConditions.titleIs ( 'Gmail' ));
# 5) frameToBeAvailableAndSwitchToIt () - Beklenen koşul, bir çerçevenin kullanılabilir olmasını bekler ve ardından çerçeve kullanılabilir olur olmaz, kontrol otomatik olarak çerçeveye geçer.
Basit kod
wait.until (ExpectedConditions.frameToBeAvailableAndSwitchToIt (By.id (' yeni çerçeve ')));
Çok yaygın bir kullanıcı eylemi vardır; kullanıcı, tarayıcının geçmişinde mevcut oturumda ziyaret edilen farklı web sayfalarına gitmek için web tarayıcısının geri ve ileri düğmelerini ileri geri tıklar. Bu nedenle, kullanıcılar tarafından gerçekleştirilen bu tür eylemleri simüle etmek için WebDriver, Navigate komutlarını sunar.
Bu komutları detaylı olarak inceleyelim:
# 1) gezin (). Geri ()
Bu komut, kullanıcının önceki web sayfasına gitmesini sağlar.
Basit kod:
sürücü.navigate (). geri ();
Yukarıdaki komut herhangi bir parametre gerektirmez ve kullanıcıyı web tarayıcısı geçmişindeki önceki web sayfasına geri götürür.
# 2) gezin (). İleri ()
Bu komut, kullanıcının tarayıcının geçmişine referansla sonraki web sayfasına gitmesini sağlar.
Basit kod:
driver.navigate (). forward ();
Yukarıdaki komut herhangi bir parametre gerektirmez ve kullanıcıyı web tarayıcısı geçmişindeki sonraki web sayfasına yönlendirir.
# 3) gezin (). Yenile ()
Bu komut, kullanıcının mevcut web sayfasını yenilemesini ve böylece tüm web öğelerini yeniden yüklemesini sağlar.
Basit kod:
driver.navigate (). renew ();
Yukarıdaki komut herhangi bir parametre gerektirmez ve web sayfasını yeniden yükler.
# 4) () gidin. ()
Bu komut, kullanıcının yeni bir web tarayıcısı penceresi açmasına ve belirtilen URL'ye gitmesine izin verir.
Basit kod:
driver.navigate (). to (“http://google.com”);
Yukarıdaki komut, parametre olarak bir web URL'si gerektirir ve ardından, belirtilen URL'yi yeni başlatılan bir web tarayıcısında açar.
Sonuç
Bunda Selenium WebDriver eğitiminde Örtük ve Açık Bekleme , sizi WebDriver'ın bekleme durumları hakkında bilgilendirmeye çalıştık. Hem açık hem de üstü kapalı beklemeleri tartıştık ve uyguladık. Aynı zamanda, farklı gezinme komutlarını da tartıştık.
İşte bu makalenin püf noktaları:
- WebDriver, kullanıcının, web öğelerini yüklemek veya belirli bir koşulu karşılamak için yürütme akışının birkaç saniye uyku gerektirebileceği durumları ele almak için mevcut beklemeler arasından seçim yapmasını sağlar. WebDriver'da iki tür bekleme vardır.
- Örtülü Bekleme
- Açık Bekleme
- Örtülü bekler Tüm test komut dosyası boyunca ardışık her test adımı / komutu arasında varsayılan bir bekleme süresi sağlamak için kullanılır. Bu nedenle, sonraki test adımı yalnızca önceki test adımı / komutunun gerçekleştirilmesinden sonra belirtilen süre geçtiğinde yürütülecektir.
- Açık bekler belirli bir koşul karşılanana veya maksimum süre geçene kadar yürütmeyi durdurmak için kullanılır. Örtülü beklemelerin aksine, Açık beklemeler yalnızca belirli bir örnek için uygulanır.
- WebDriver, Açık beklemeleri zorunlu kılmak için WebDriverWait ve ExpectedConditions gibi sınıflar sunar
- Beklenen Koşullar sınıfı, gerçek test adımını yürütmeden önce bir koşulun oluşup oluşmadığını tespit etmemiz gereken senaryolarla başa çıkmak için büyük yardım sağlar.
- ExpectedConditions sınıfı, WebDriverWait referans değişkeni ve until () yöntemi yardımıyla erişilebilen çok çeşitli beklenen koşullarla birlikte gelir.
- Navigate () yöntemleri / komutlar, çeşitli web sayfaları arasında ileri ve geri gezinirken kullanıcı davranışını simüle etmek için kullanılır.
Sonraki Eğitim # 16 : Listedeki bir sonraki eğiticiye gelince, kullanıcıları web sitelerine erişirken görünebilecek çeşitli uyarı türlerine ve WebDriver'daki kullanım yaklaşımlarına aşina hale getireceğiz. Odaklanacağımız uyarı türleri büyük ölçüde - pencere tabanlı uyarı açılır pencereleri ve web tabanlı uyarı açılır pencereleridir. Windows tabanlı açılır pencereleri işlemenin WebDriver'ın yeteneklerinin ötesinde olduğunu bildiğimizden, pencere açılır pencerelerini işlemek için bazı üçüncü taraf yardımcı programları da kullanacağız.
Okuyucular için Not : O zamana kadar okuyucular, çeşitli beklenen koşulları ve gezinme komutlarını kullanarak çeşitli sayfa yüklemelerine ve ekrana açılan dinamik öğelere sahip senaryoları otomatikleştirebilirler.
Önerilen Kaynaklar
- Salatalık Selenium Eğitimi: Salatalık Java Selenium WebDriver Entegrasyonu
- Selenium WebDriver'a Giriş - Selenium Eğitimi # 8
- İlk WebDriver Komut Dosyamızın Uygulanması - Selenium WebDriver Eğitimi # 10
- Selenyum SSS
- Selenium WebDriver'da Uyarılar / Açılır Pencereler Nasıl İşlenir - Selenium Eğitimi # 16
- Selenium WebDriver'da Kapsam Raporları Oluşturma Kılavuzu
- Selenium WebDriver'ı Farklı Popüler Tarayıcılarda Çalıştırma
- Eclipse ile WebDriver Tam Kurulum ve Kurulum - Selenium Eğitimi # 9