C# ile Selenium Web Driver’da Paralel Test

Bu yazımda sizlere Selenium WebDriver’da test senaryolarınızı nasıl paralel koşturacağınızı anlatacağım. Hazırladığınız test methodlarını birbirinden bağımsız şekilde aynı anda koşturarak zamandan ve iş gücünden çok ciddi şekilde kazanç sağlayabilirsiniz.

Visual Studio üzerinde ClassLibrary (.NET Framework) projesi oluşturun. Proje oluşturulduktan sonra default olarak gelen Class1.cs sınıfını silmeyi unutmayın.

Kullanılacak Kütüphanelerin Projeye Dahil Edilmesi

Manage NuGet Packages kısmından NUnit, NUnit3TestAdapter, Selenium. WebDriver , Selenium.WebDriver.ChromeDriver, Selenium.Support kütüphanelerini projenize referans olarak ekleyin.

BaseTest.cs adında bir sınıf oluşturduk. Bu sınıfta [SetUp] ve [TearDown] etiketlerini tanımladık. Ayrıca web driver nesnesini her kullanımda yeni örneğini oluşturmamak için property olarak tanımladık.

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace ParallelTestExample
{
    public class BaseTest
    {
        public IWebDriver webDriver { get; set; }

        [SetUp]
        public void SetUp()
        {
            webDriver = new ChromeDriver();
            webDriver.Manage().Window.Maximize();
        }

        [TearDown]
        public void TearDown()
        {
            webDriver.Quit();
        }
    }    
}

Login sayfamızı test etmek için LoginPageTest.cs adında bir sınıf oluştruduk. Bu sınıfın içerisinde SuccessLogin test methodu ile kullanıcı adı ve parola bilgilerini doğru girerek oturum açmayı test ediyor olacağız. Burada dikkat etmeniz gereken nokta test sınıfının başına [Parallelizable] etiketini ekliyoruz bu etiket bize sınıfı paralel test etme imkanı sunacaktır. LoginPageTest.cs sınıfına ait kod bloğu aşağıdaki gibidir.

using NUnit.Framework;

namespace ParallelTestExample
{
    [TestFixture]
    [Parallelizable]
    public class LoginPageTest : BaseTest
    {
        [Test]
        public void SuccessLogin()
        {
         
       webDriver.Navigate().GoToUrl("http://localhost:8383/DemoLogin/index.html");
            webDriver.FindElement(By.Id("kullaniciAdi")).SendKeys("admin");
            webDriver.FindElement(By.Id("parola")).SendKeys("123456");
            webDriver.FindElement(By.Id("btnGirisYap")).Click();
            Assert.AreEqual(webDriver.Title, "Home Page");
        }
    }
}

Home Page sayfasında ise SuccessUserSave test methodu ile başarılı bir kullanıcı tanımlama senaryosunu test ediyor olacağız. Yine bu sınıfta
[Parallelizable] etiketini eklemeyi unutmuyoruz. HomePageTest.cs sınıfına ait kod bloğu aşağıdadır.

using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;

namespace ParallelTestExample
{
    [TestFixture]
    [Parallelizable]
    public class HomePageTest : BaseTest
    {
        [Test]
        public void SuccessUserSave()
        {
            webDriver.Navigate().GoToUrl("http://localhost:8383/DemoLogin/HomePage.html");
            webDriver.FindElement(By.Id("txtAd")).SendKeys("test-user");
            webDriver.FindElement(By.Id("txtSoyad")).SendKeys("123456");
            webDriver.FindElement(By.Id("radio2")).Click();
            new SelectElement(webDriver.FindElement(By.Id("cboxUnvan"))).SelectByValue("1");
            webDriver.FindElement(By.Id("btnSubmit")).Click();
            Assert.AreEqual(webDriver.SwitchTo().Alert().Text, "Kullanıcı kaydetme işlemi başarıyla tamamlandı.");
            webDriver.SwitchTo().Alert().Accept();
        }
    }
}

Test Explorer ekranından Run All komutu verildiğinde aynı anda iki farklı tarayıcı ekranından test senaryolarımızın çalıştığını görebiliriz.

Google Chrome Paralel Test
Test Sonucu

Faydalı olması dileğiyle..