Paralel Yürütme Selenium
⚡ Akıllı Özet
Oturumlar, paralel çalıştırma ve bağımlılıklar Selenium Her WebDriver örneği için benzersiz bir sessionId'yi birleştirin TestNG Bu paket kontrolleri, birçok tarayıcı penceresinin aynı anda bağımsız veya sıralı komut dosyaları çalıştırmasına ve regresyon döngüsünü daha hızlı tamamlamasına olanak tanır.

Komut dosyalarını paralel olarak çalıştırmayı anlamak için öncelikle nasıl yapılacağını bilmeniz gerekir. Selenium Her bir tarayıcıyı oturumlar aracılığıyla birbirinden ayırır.
Oturum İşleme'ye neden ihtiyacımız var?
Testin yürütülmesi sırasında, Selenium WebDriver, verilen komutları yürütmek için her adımda tarayıcıyla etkileşim kurmak zorundadır. Bu test çalışırken, başka bir kullanıcı aynı makinede ve aynı tür tarayıcıda ikinci bir komut dosyası başlatabilir.
Böyle bir durumda, iki işlemin üst üste gelmemesini sağlayacak bir mekanizmaya ihtiyacımız var. Selenium Bu sorun oturum yönetimi yoluyla çözülür.
Oturum İşleme'ye nasıl ulaşılır? Selenium Web Sürücüsü?
Eğer incelerseniz Selenium WebDriver kaynak kodunda, adı geçen bir değişken bulacaksınız. sessionIdHer yeni WebDriver örneği oluşturduğunuzda, yeni bir örnek oluşturulur. sessionId oluşturulur ve ona eklenir. FirefoxChrome veya IE sürücüsü.
Bundan sonraki her komut yalnızca o belirli tarayıcı oturumu içinde çalışır.
Bu özellik WebDriver'a entegre edildiği için sessionId'yi manuel olarak atamanıza gerek yoktur.
Code Örnek: İki farklı WebDriver örneği için iki farklı oturum oluşturulur.
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(); // Go to guru99 demo site driver.get("https://demo.guru99.com/V4/"); // Second session of WebDriver WebDriver driver2 = new FirefoxDriver(); // Go to guru99 demo site driver2.get("https://demo.guru99.com/V4/"); } }
Paralel Testler nasıl çalıştırılır? Selenium
Bazen aynı anda birden fazla test çalıştırmak isteyebilirsiniz, örneğin: tarayıcılar arası kontroller veya büyük sigara içme odaları.
Bu gibi durumlarda, parallel özniteliği TestNG Suite Tag işini hallediyor.
Suite etiketinin parallel özniteliği dört değer kabul eder:
| öznitelik değeri | anlam |
|---|---|
| testleri | Tümü test senaryoları içeride etiketinin test yapmak XML dosyası paralel olarak çalıştırılıyor. |
| sınıflar | Bir içindeki tüm test durumları Java Sınıf paralel olarak çalıştırılıyor. |
| yöntemleri | @Test ek açıklamasıyla işaretlenmiş tüm metotlar paralel olarak yürütülür. |
| durumlarda | Aynı örnek içindeki testler paralel olarak çalışırken, iki farklı örneğin iki yöntemi farklı iş parçacıklarında çalışır. |
MKS thread-count Bu özellik, söz konusu yürütme için kaç iş parçacığının ayrılacağına karar verir. Bunu şununla birlikte kullanın: TestNG yapı hem de kurmak TestNG in Eclipse Çalıştırmadan önce. Tek bir makineden daha büyük ölçeklendirme için, aynı test paketini şu şekilde yönlendirin: Selenium Kılavuz 4 Dağıtılmış paralel yürütme için.
Örnek: Üç test senaryosu paralel olarak çalışır ve oturum açma verilerini doldurur. https://demo.guru99.com/.
Projenin tamamlanmış hali şöyle görünüyor:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class TestGuru99MultipleSession { @Test public void executeSessionOne() { // First session of WebDriver System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demo.guru99.com/V4/"); // Find the 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(); driver.get("https://demo.guru99.com/V4/"); driver.findElement(By.name("uid")).sendKeys("Driver 2"); } @Test public void executeSessionThree() { // Third session of WebDriver System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demo.guru99.com/V4/"); 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"/> </classes> </test> </suite>
Test Senaryosu sırası ve Bağımlılık
Sıralamayı ve bağımlılıkları ayarlayabilirsiniz. test durumu Yürütme. Diyelim ki iki test senaryonuz var, testGuru99TC1 hem de testGuru99TC2, ve sen istiyorsun testGuru99TC2 önce çalıştırmak testGuru99TC1. Kullan dependsOnMethods özellik (veya dependsOnGroups (Grup düzeyinde zincirleme için) bu sırayı düzeltmek için. Daha geniş kapsamlı otomasyon çerçevesi tasarım, karşılaştır JUnit vs TestNGve gözden geçirin findElement Bağımlı testlerinizin aynı konum belirleyicileri paylaşıp paylaşmadığını kontrol edin.
<?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 name="testGuru99TC1" dependsOnMethods="testGuru99TC2"/> <include name="testGuru99TC2"/> </class> </classes> </test> </suite>
MKS TestNG çalışma zamanı, şu adreste barındırılıyor: testng.orgBu bildirimleri iş parçacıklarını başlatmadan önce değerlendirir, böylece bağımlı yöntemler her zaman ön koşulları tamamlandıktan sonra başlar.





