Paralel Yürütme Selenium

Komut dosyalarının paralel olarak nasıl çalıştırılacağını anlamak için önce şunu anlayalım:

Oturum İşleme'ye neden ihtiyacımız var?

Testin yürütülmesi sırasında, Selenium WebDriver'ın verilen komutları yürütmek için her zaman tarayıcıyla etkileşimde olması gerekir. Yürütme sırasında, mevcut yürütme tamamlanmadan önce başka birinin aynı makinede ve aynı tür tarayıcıda başka bir betiği yürütmeye başlaması da mümkündür.

Oturum Yönetimi

Böyle bir durumda iki farklı icraatımızın birbiriyle örtüşmemesi gereken bir mekanizmaya ihtiyacımız var. Bu, Oturum İşleme kullanılarak gerçekleştirilebilir. Selenium.

Oturum İşleme'ye nasıl ulaşılır? Selenium Web Sürücüsü?

Kaynak kodunu kontrol ederseniz Selenium WebDriver'da 'sessionId' adında bir değişken bulacaksınız. Ne zaman bir WebDriver nesnesinin yeni bir örneğini oluşturduğumuzda, yeni bir 'sessionId' oluşturulacak ve söz konusu nesneye eklenecektir. Firefox/Chrome/IE Sürücüsü ().

Oturum Yönetimini Gerçekleştirin Selenium Web Sürücüsü

Yani bundan sonra yapacağımız her şey yalnızca o belirli alanda yürütülecek Firefox tarayıcı oturumu.

Oturum Yönetimini Gerçekleştirin Selenium Web Sürücüsü

Bu yerleşik bir işlevsellik olduğundan, oturum kimliğini atamaya açık bir ihtiyaç yoktur.

Kod Örneği: Burada iki farklı WebDriver için iki farklı oturum oluşturulacaktır.

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class SessionHandling {
public static void main(String...strings ){
    //First session of WebDriver
    WebDriver driver = new FirefoxDriver();
    //Goto guru99 site
    driver.get("https://demo.guru99.com/V4/");
    
    //Second session of WebDriver
    WebDriver driver2 = new FirefoxDriver();
    //Goto guru99 site
    driver2.get("https://demo.guru99.com/V4/");
}
}

Paralel Testler nasıl çalıştırılır? Selenium

Aynı anda birden fazla test yürütmek istediğiniz durumlar vardır.

Bu gibi durumlarda “paralel” niteliği kullanılabilir.

Paralel Testleri Çalıştırın Selenium

Suite etiketinin paralel niteliği dört değeri kabul edebilir:

testleri Tüm test senaryoları içeride etiketi Test yapmak xml dosyası paralel olarak çalışacaktır.
sınıflar Bir içindeki tüm test senaryoları Java sınıf paralel çalışacak
yöntemleri @Test açıklamasına sahip tüm yöntemler paralel olarak yürütülür.
durumlarda Aynı örnekteki test senaryoları paralel olarak yürütülür ancak iki farklı örneğin iki yöntemi farklı iş parçacığında çalışacaktır.

Thread-count özelliği, bu yürütme için kaç iş parçacığının tahsis edilmesi gerektiğini belirtmenize olanak tanır.

Tam Örnek: Bu Örnekte, üç test senaryosu paralel çalışacak ve oturum açma verilerini dolduracaktır. https://demo.guru99.com/

Komple proje şöyle görünecek:

Paralel Testleri Çalıştırın Selenium

TestGuru99MultipleSession.java

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class TestGuru99MultipleSession {
    @Test    
    public void executSessionOne(){
            //First session of WebDriver
        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
            WebDriver driver = new ChromeDriver();
            //Goto guru99 site
            driver.get("https://demo.guru99.com/V4/");
            //find user name text box and fill it
            driver.findElement(By.name("uid")).sendKeys("Driver 1");
            
        }
        
    @Test    
        public void executeSessionTwo(){
            //Second session of WebDriver
        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
        WebDriver driver = new ChromeDriver();
            //Goto guru99 site
        driver.get("https://demo.guru99.com/V4/");
        //find user name text box and fill it
        driver.findElement(By.name("uid")).sendKeys("Driver 2");
        
        }
        
    @Test    
        public void executSessionThree(){
            //Third session of WebDriver
        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
        WebDriver driver = new ChromeDriver();
            //Goto guru99 site
        driver.get("https://demo.guru99.com/V4/");
        //find user name text box and fill it
        driver.findElement(By.name("uid")).sendKeys("Driver 3");
        
        }        
}

TestNG.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="3" parallel="methods" >
<test name="testGuru">
<classes>
<class name="TestGuru99MultipleSession">
</class>
</classes>
</test>
</suite>

Test Senaryosu sırası ve Bağımlılık

Sırasını ve bağımlılığını ayarlayabilirsiniz. Test Durumu yürütme.

'testGuru99TC1' ve 'testGuru99TC2' olmak üzere iki test senaryonuz olduğunu ve 'testGuru99TC2'den önce 'testGuru99TC1' test senaryosunu yürütmek istediğinizi varsayalım. Bu durumda bağımlılığı ve yürütme sırasını oluşturmak için 'dependsOnMethods' özelliğini kullanacağız.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="3" parallel="methods" >
<test name="testGuru">
<classes>
<class name="TestGuru99MultipleSession">
<include value="testGuru99TC1" dependsOnMethods=" testGuru99TC2"/>
<include value="testGuru99TC2"/>
</class>
</classes>
</test>
</suite>

ÖZET

  • WebDriver'ın yeni bir örneği için yeni bir oturum kimliği oluşturulur.
  • Bir oturum belirli bir tarayıcıya bağlanacaktır.
  • İş parçacığı ve paralel özelliğini kullanarak komut dosyalarınızı paralel olarak çalıştırırsınız.
  • Yürütmeyi test etme sırasını ayarlamak için öznitelik bağımlılığını kullanabilirsiniz.

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