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.
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ü ().
Yani bundan sonra yapacağımız her şey yalnızca o belirli alanda yürütülecek Firefox tarayıcı oturumu.
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.
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:
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.





