JavaScriptExecutor'da Selenium Örnek ile

Nedir? JavaScriptExecutor?

JavaScriptExecutor, yürütmeye yardımcı olan bir arayüzdür JavaKomut dosyası aracılığıyla Selenium Web sürücüsü. JavaScriptExecutor, seçili pencerede veya geçerli sayfada javascript'i çalıştırmak için “executescript” ve “executeAsyncScript” adlı iki yöntem sağlar.

JavaKomut DosyasıYürütücü

Neden ihtiyacımız var JavaScriptExecutor?

In Selenium Web sürücüsü, XPath, CSS vb. gibi konum belirleyiciler, bir web sayfasındaki işlemleri tanımlamak ve gerçekleştirmek için kullanılır.

Bu konumlayıcıların çalışmaması durumunda kullanabilirsiniz JavaScriptExecutor. Kullanabilirsiniz JavaBir web elemanı üzerinde istenilen işlemi gerçekleştirmek için ScriptExecutor.

Selenium javaScriptExecutor'u destekler. Ekstra bir eklentiye veya eklentiye gerek yoktur. Sadece içe aktarmanız gerekiyor (org.openqa.selenium.Javascriptvasiyet hükümlerini gerçekleştiren erkek) komut dosyasında kullanılacak şekilde JavaKomutDosyasıYürütücüsü.

JavaScriptExecutor Yöntemleri Selenium

yürütmeScripti

Bu yöntem yürütülür JavaSenaryo o anda seçili olan çerçeve veya pencere bağlamında Selenium. Bu yöntemde kullanılan komut dosyası, anonim bir işlevin (adı olmayan bir işlev) gövdesinde çalışır. Ona karmaşık argümanlar da aktarabiliriz.

Komut dosyası değerleri döndürebilir. Döndürülen veri türleri şunlardır:

  • Boole
  • Uzun
  • dizi
  • Liste
  • WebElement.

JavascriptYürütücü sözdizimi:

JavascriptExecutor js = (JavascriptExecutor) driver;  
js.executeScript(Script,Arguments);
  • Senaryo - Bu JavaÇalıştırılması gereken komut dosyası.
  • Argümanlar – Senaryonun argümanlarıdır. Bu isteğe bağlıdır.

AsyncScript'i çalıştır

Eşzamansız betikle sayfanız daha hızlı işlenir. Kullanıcıların sayfa işlenmeden önce bir betiğin indirilmesini beklemesini zorlamak yerine. Bu işlev, eşzamansız bir parçayı yürütecektir. JavaŞu anda seçili olan çerçeve veya pencere bağlamındaki komut dosyası SeleniumBu şekilde yürütülen JS, senkron olarak çalışan çeşitli geri çağırma fonksiyonlarına sahip tek iş parçacıklıdır.

Nasıl kullanılır? JavaScriptExecutor'da Selenium

İşte nasıl kullanılacağına dair adım adım bir süreç JavaScriptExecutor'da Selenium:

) 1 Adım Paketi içe aktarın.

import org.openqa.selenium.JavascriptExecutor;

) 2 Adım Bir Referans Oluşturun.

JavascriptExecutor js = (JavascriptExecutor) driver;

) 3 Adım Ara JavascriptYürütücü yöntemi.

js.executeScript(script, args);

Kullanarak Bir Öğeye Tıklama Örneği JavaScripExecutor'da Selenium

ExecuteScript için üç farklı örneği tek tek göreceğiz.

1) Örnek: Giriş yapmak ve Uyarı penceresini oluşturmak için bir düğmeye tıklayın. JavaKomutDosyasıYürütücüsü.

Bu senaryoda, örnek olarak “Guru99” demo sitesini kullanacağız. JavaScriptExecutor. Bu örnekte,

Oturum Açmak ve Uyarı Penceresi Oluşturmak İçin Bir Düğmeye Tıklayın JavaKomut DosyasıYürütücü

  • Başarılı oturum açma durumunda uyarı penceresini görüntüle.
import org.openqa.selenium.By;		
import org.openqa.selenium.JavascriptExecutor;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.WebElement;		
import org.openqa.selenium.firefox.FirefoxDriver;		
import org.testng.annotations.Test;		
    		
public class JavaSE_Test {				


    @Test		
    public void Login() 					
    {		
        WebDriver driver= new FirefoxDriver();			
        		
        //Creating the JavascriptExecutor interface object by Type casting		
        JavascriptExecutor js = (JavascriptExecutor)driver;		
        		
        //Launching the Site.		
        driver.get("https://demo.guru99.com/V4/");			
        		
        WebElement button =driver.findElement(By.name("btnLogin"));			
        		
        //Login to Guru99 		
        driver.findElement(By.name("uid")).sendKeys("mngr34926");					
        driver.findElement(By.name("password")).sendKeys("amUpenu");					
        		
        //Perform Click on LOGIN button using JavascriptExecutor		
        js.executeScript("arguments[0].click();", button);
                                
        //To generate Alert window using JavascriptExecutor. Display the alert message 			
        js.executeScript("alert('Welcome to Guru99');");   
    		
    }		
}

Çıktı: Kod başarıyla yürütüldüğünde. gözlemleyeceksin

  • Giriş düğmesine başarılı bir şekilde tıklayın ve
  • Uyarı penceresi görüntülenecektir (aşağıdaki resme bakın).

Oturum Açmak ve Uyarı Penceresi Oluşturmak İçin Bir Düğmeye Tıklayın JavaKomut DosyasıYürütücü

2) Örnek: Kazıma Verilerini Yakalayın ve şunu kullanarak farklı sayfalara gidin: JavaKomutDosyasıYürütücüsü.

Aşağıdaki selenyum betiğini yürütün. Bu örnekte,

  • Siteyi başlat
  • Sitenin URL'si, başlık adı ve alan adı gibi sitenin ayrıntılarını alın.
  • Daha sonra farklı bir sayfaya gidin.
import org.openqa.selenium.JavascriptExecutor;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.firefox.FirefoxDriver;		
import org.testng.annotations.Test;		
    		
public class JavaSE_Test {				

    @Test		
    public void Login() 					
    {		
        WebDriver driver= new FirefoxDriver();			
        		
        //Creating the JavascriptExecutor interface object by Type casting		
        JavascriptExecutor js = (JavascriptExecutor)driver;		
        		
        //Launching the Site.		
        driver.get("https://demo.guru99.com/V4/");
			
        //Fetching the Domain Name of the site. Tostring() change object to name.		
        String DomainName = js.executeScript("return document.domain;").toString();			
        System.out.println("Domain name of the site = "+DomainName);					
          		
        //Fetching the URL of the site. Tostring() change object to name		
        String url = js.executeScript("return document.URL;").toString();			
        System.out.println("URL of the site = "+url);					
          		
       //Method document.title fetch the Title name of the site. Tostring() change object to name		
       String TitleName = js.executeScript("return document.title;").toString();			
       System.out.println("Title of the page = "+TitleName);					

        		
      //Navigate to new Page i.e to generate access page. (launch new url)		
      js.executeScript("window.location = 'https://demo.guru99.com/'");			
    }		
}

Çıktı: Yukarıdaki kod başarıyla yürütüldüğünde, sitenin ayrıntılarını getirecek ve aşağıda gösterildiği gibi farklı bir sayfaya yönlendirecektir.

Verileri Kazıyın ve Kullanarak Farklı Sayfalara Gidin JavaKomut DosyasıYürütücü

[TestNG] Running:		
  C:\Users\gauravn\AppData\Local\Temp\testng-eclipse-467151014\testng-customsuite.xml		

log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).		
log4j:WARN Please initialize the log4j system properly.		
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.		
Domain name of the site = demo.guru99.com		
URL of the site = https://demo.guru99.com/V4/		
Title of the page = Guru99 Bank Home Page		
PASSED: Login		

===============================================		
    Default test		
    Tests run: 1, Failures: 0, Skips: 0
===============================================

Verileri Kazıyın ve Kullanarak Farklı Sayfalara Gidin JavaKomut DosyasıYürütücü

3) Örnek: kullanarak Aşağı Kaydırın JavaKomutDosyasıYürütücüsü.

Aşağıdaki selenyum betiğini yürütün. Bu örnekte,

  • Siteyi başlat
  • 600 piksel aşağı kaydır
import org.openqa.selenium.JavascriptExecutor;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.firefox.FirefoxDriver;		
import org.testng.annotations.Test;		
    		
public class JavaSE_Test {				

    @Test		
    public void Login() 					
    {		
        WebDriver driver= new FirefoxDriver();			
        		
        //Creating the JavascriptExecutor interface object by Type casting		
        JavascriptExecutor js = (JavascriptExecutor)driver;		
        		
        //Launching the Site.		
        driver.get("http://moneyboats.com/");			
     
        //Maximize window		
        driver.manage().window().maximize();		
        		
        //Vertical scroll down by 600  pixels		
        js.executeScript("window.scrollBy(0,600)");			
    }		
}

Çıktı: Yukarıdaki kod çalıştırıldığında 600 piksel aşağı kaydırılacaktır (aşağıdaki resme bakın).

Kullanarak Aşağı Kaydırın JavaKomut DosyasıYürütücü

executeAsyncScript örneği Selenium

executeAsyncScript'i kullanmak, testinizin performansını iyileştirmeye yardımcı olur. Testin normal kodlamaya daha çok benzemesini sağlar.

yöneticiSync tarafından gerçekleştirilen diğer eylemleri engeller Selenium tarayıcı ancak execAsync eylemi engellemez. Sunucu tarafına bir geri arama gönderecektir Test yapmak Senaryo tamamlandığında süit. Bu, betiğin içindeki her şeyin sunucu tarafından değil tarayıcı tarafından yürütüleceği anlamına gelir.

Örnek 1: Test edilen tarayıcıda uyku işlemi gerçekleştirme.

Bu senaryoda, executeAsyncScript'i göstermek için "Guru99" demo sitesini kullanacağız. Bu örnekte,

  • Tarayıcıyı başlatın.
  • Siteyi aç https://demo.guru99.com/V4/.
  • Uygulama başka bir işlem gerçekleştirmek için 5 saniye bekler.

) 1 Adım executeAsyncScript() metodunu kullanarak 5 saniye (5000 milisaniye) beklemeden önceki başlangıç ​​zamanını yakalayın.

) 2 Adım Daha sonra executeAsyncScript() fonksiyonunu kullanarak 5 saniye bekleyin.

) 3 Adım Daha sonra güncel saati alın.

) 4 Adım Çıkarma (geçerli saat – başlangıç ​​zamanı) = geçen süre.

) 5 Adım Çıktının 5000 milisaniyeden fazla göstermesi gerektiğini doğrulayın

import java.util.concurrent.TimeUnit;		

import org.openqa.selenium.JavascriptExecutor;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.firefox.FirefoxDriver;		
import org.testng.annotations.Test;		
    		
public class JavaSE_Test {				

    @Test		
    public void Login() 					
    {		
        		
        WebDriver driver= new FirefoxDriver();			

        //Creating the JavascriptExecutor interface object by Type casting		
        JavascriptExecutor js = (JavascriptExecutor)driver;		
        		
        //Launching the Site.		
        driver.get("https://demo.guru99.com/V4/");			
     
          //Maximize window		
          driver.manage().window().maximize();		
        		
          //Set the Script Timeout to 20 seconds		
          driver.manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS);			
             
          //Declare and set the start time		
          long start_time = System.currentTimeMillis();			
                   
          //Call executeAsyncScript() method to wait for 5 seconds		
          js.executeAsyncScript("window.setTimeout(arguments[arguments.length - 1], 5000);");			
          		
         //Get the difference (currentTime - startTime)  of times.		
         System.out.println("Passed time: " + (System.currentTimeMillis() - start_time));					
                    		
    }		
}			

Çıktı: Aşağıda gösterildiği gibi 5 saniyeden (5000 milisaniye) fazla geçen süre başarıyla görüntülendi:

[TestNG] Running:		
C:\Users\gauravn\AppData\Local\Temp\testng-eclipse-387352559\testng-customsuite.xml		
log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).		
log4j:WARN Please initialize the log4j system properly.		
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.		
Passed time: 5022		
PASSED: Login		

===============================================		
    Default test		
    Tests run: 1, Failures: 0, Skips: 0		
===============================================

ÖZET

JavaScriptExecutor şu durumlarda kullanılır: Selenium Web sürücüsü bazı sorunlardan dolayı herhangi bir öğeye tıklayamıyor.

  • JavaScriptExecutor, işlemek için “executescript” ve “executeAsyncScript” adlı iki yöntem sağlar.
  • Yürütüldü JavaKomut dosyası kullanarak Selenium Web sürücüsü.
  • Bir öğeye nasıl tıklanacağını resimli olarak JavaScriptExecutor, selenium bazı sorunlardan dolayı öğeye tıklayamazsa.
  • 'Uyarı' penceresini kullanarak oluşturuldu JavaKomutDosyasıYürütücüsü.
  • kullanılarak farklı sayfaya gidildi JavaKomutDosyasıYürütücüsü.
  • kullanarak pencereyi aşağı kaydırdı. JavaKomutDosyasıYürütücüsü.
  • URL, başlık ve alan adı kullanılarak getirildi JavaKomutDosyasıYürütücüsü.

Devamını Oku readmore

Günlük Guru99 Bülteni

Gününüze, şu anda elinize ulaşan en son ve en önemli yapay zeka haberleriyle başlayın.