Ara

Web Otomasyonu İçin C# Ve Selenium Webdriver: Adım Adım Bot Yazma Rehberi

Selenium WebDriver, web uygulamalarını test etmek ve otomatikleştirmek için kullanılan güçlü bir araçtır. Bu makalede, C# ile Selenium WebDriver kullanarak bot yazmayı öğreneceksiniz. Ayrıca, Selenium'un desteklediği diller, platformlar ve tarayıcılar hakkında bilgi edineceksiniz. Son olarak, Selenium WebDriver kütüphanesini projeye nasıl ekleyeceğinizi ve kodları metodlar ve sınıflar halinde nasıl düzenleyeceğinizi öğreneceksiniz.

 

Selenium WebDriver Desteklediği Diller

Selenium WebDriver, çok sayıda programlama diliyle kullanılabilir. Bu diller arasında şunlar bulunur:

  • Java: Selenium'un en yaygın kullanılan dilidir.
  • C#: Özellikle .NET geliştiricileri için popülerdir.
  • Python: Hızlı geliştirme ve kolay öğrenme eğrisi sunar.
  • Ruby: Dinamik ve kolay okunabilir bir dildir.
  • JavaScript: Node.js ile kullanılabilir.
  • PHP: Web geliştirme dünyasında yaygın olarak kullanılır.

Bu çoklu dil desteği, geliştiricilerin kendi projeleri için en uygun dili seçmelerine olanak tanır.

 

Selenium WebDriver Desteklediği Platformlar

Selenium WebDriver, çeşitli platformlarda çalışabilir, bu da onu esnek ve güçlü bir araç haline getirir. Desteklenen platformlar şunlardır:

  • Windows: En yaygın kullanılan işletim sistemi.
  • macOS: Apple kullanıcıları için tercih edilen platform.
  • Linux: Özellikle sunucu tabanlı uygulamalar ve açık kaynak projeler için yaygın.
  • Unix: Daha teknik ve özel projeler için kullanılır.

Bu geniş platform desteği, Selenium'un çeşitli ortamlarda kullanılabilirliğini artırır.

 

Selenium WebDriver Desteklediği Tarayıcılar

Selenium WebDriver, farklı tarayıcılarda test yapabilme esnekliği sağlar. Desteklediği tarayıcılar şunlardır:

  • Google Chrome: En yaygın kullanılan tarayıcıdır ve ChromeDriver ile desteklenir.
  • Mozilla Firefox: Geckodriver ile kullanılır.
  • Microsoft Edge: EdgeDriver ile çalışır.
  • Safari: SafariDriver ile macOS kullanıcıları için uygundur.
  • Opera: Operadriver ile çalışır.

Bu tarayıcı desteği, web uygulamalarınızın farklı ortam ve tarayıcılarda sorunsuz çalışmasını sağlar.

 

Selenium WebDriver Projeye Nasıl Eklenir?

Selenium WebDriver'ı C# projenize eklemek için şu adımları izleyin:

  1. Visual Studio'yu açın: Yeni bir proje oluşturun veya mevcut bir projeyi açın.
  2. NuGet Paket Yöneticisi: Projeye sağ tıklayın ve "Manage NuGet Packages" seçeneğine tıklayın.
  3. Selenium WebDriver'ı ekleyin: Arama çubuğuna "Selenium.WebDriver" yazın ve çıkan paketi yükleyin.
  4. ChromeDriver'ı ekleyin: Aynı işlemi "Selenium.WebDriver.ChromeDriver" paketi için de yapın.

Bu adımlar tamamlandıktan sonra, projeniz Selenium WebDriver kullanıma hazır olacaktır.

 

Selenium WebDriver Kullanarak Bot Yazma

Aşağıda, Selenium WebDriver kullanarak basit bir bot yazma adımları verilmiştir:

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

namespace SeleniumBot
{
    class Program
    {
        static void Main(string[] args)
        {
            // WebDriver'ı başlat
            IWebDriver driver = new ChromeDriver();

            // Hedef URL'ye git
            driver.Navigate().GoToUrl("http://www.example.com");

            // Elementleri bul ve işlemler yap
            IWebElement searchBox = driver.FindElement(By.Name("q"));
            searchBox.SendKeys("Selenium WebDriver");

            IWebElement searchButton = driver.FindElement(By.Name("btnK"));
            searchButton.Click();

            // Sonuçları al ve işle
            var results = driver.FindElements(By.CssSelector("h3"));
            foreach (var result in results)
            {
                Console.WriteLine(result.Text);
            }

            // Tarayıcıyı kapat
            driver.Quit();
        }
    }
}

Bu örnek, basit bir web araması yapan ve sonuçları konsola yazdıran bir botu göstermektedir. Ayrıyeten aşağıda hazır bir sınıf bulunmaktadır. Umarım işinize yarar.

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Interactions;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

public class Browser
{
    public static IWebDriver WebDriver;
    public Browser()
    {
        Initialize();
    }

    private void Initialize()
    {
        var options = new FirefoxOptions();
        //options.AddArgument("-headless"); //Hide browser

        var service = FirefoxDriverService.CreateDefaultService();
        service.FirefoxBinaryPath = "C:\\Program Files\\Mozilla Firefox\\firefox.exe";
        service.HideCommandPromptWindow = true; //Hide command prompt window

        WebDriver = new FirefoxDriver(service, options);
        WebDriver.Manage().Window.Size = new Size(1080, 720);
        ShowBrowser();
    }

    public static void HideBrowser()
    {
        try
        {
            int screenWidth = Screen.PrimaryScreen.Bounds.Width;
            int screenHeight = Screen.PrimaryScreen.Bounds.Height;

            int appWidth = WebDriver.Manage().Window.Size.Width;
            int appHeight = WebDriver.Manage().Window.Size.Height;

            var locationX = screenWidth + appWidth + 10;
            var locationY = (screenHeight - appHeight) / 2;
            WebDriver.Manage().Window.Position = new Point(locationX, locationY);
        }
        catch { }
    }

    public static void ShowBrowser()
    {
        int screenWidth = Screen.PrimaryScreen.Bounds.Width;
        int screenHeight = Screen.PrimaryScreen.Bounds.Height;

        int appWidth = WebDriver.Manage().Window.Size.Width;
        int appHeight = WebDriver.Manage().Window.Size.Height;

        var locationX = (screenWidth - appWidth) / 2;
        var locationY = (screenHeight - appHeight) / 2;
        WebDriver.Manage().Window.Position = new Point(locationX, locationY);
    }

    public static void ScrollPageDown(int amount)
    {
        try
        {
            IJavaScriptExecutor js = (IJavaScriptExecutor)WebDriver;
            js.ExecuteScript("window.scrollTo(0, " + amount + ")");
            Task.Delay(new Random().Next(1000, 2000)).Wait();
        }
        catch { }

    }

    public static void ScrollPageToBottom()
    {
        try
        {
            IJavaScriptExecutor js = (IJavaScriptExecutor)WebDriver;
            js.ExecuteScript("window.scrollTo(0, document.body.scrollHeight)");
            Task.Delay(new Random().Next(1000, 2000)).Wait();
        }
        catch { }
    }

    public static void ScrollDivDown(IWebElement scroll)
    {
        scroll.Click();
        var actions = new Actions(WebDriver);
        actions.SendKeys(OpenQA.Selenium.Keys.End).Build().Perform();
        Task.Delay(new Random().Next(1000, 2000)).Wait();
    }

    public static void HoverOverElement(IWebElement element)
    {
        try
        {
            var hover = new Actions(WebDriver);
            hover.MoveToElement(element);
            hover.Build();
            hover.Perform();
        }
        catch { }
    }

    public static void ClickEnter()
    {
        var builder = new Actions(WebDriver);
        builder.SendKeys(OpenQA.Selenium.Keys.Enter);
    }

    public static void OpenNewTab()
    {
        //Open new tab
        ((IJavaScriptExecutor)WebDriver).ExecuteScript("window.open()");
        //Switch to new tab
        var tabs = new List(WebDriver.WindowHandles);
        WebDriver.SwitchTo().Window(tabs[1]);
    }

    public static void CloseTab()
    {
        WebDriver.SwitchTo().Window(WebDriver.WindowHandles[1]);
        WebDriver.Close();
        WebDriver.SwitchTo().Window(WebDriver.WindowHandles[0]);
    }

    public static void Close()
    {
        try
        {
            if (WebDriver != null) WebDriver.Dispose();
        }
        catch { }
    }
}

C# ile Selenium WebDriver kullanarak bot yazmak, web uygulamalarını test etmek ve otomatikleştirmek için etkili bir yöntemdir. Bu makalede, Selenium'un desteklediği diller, platformlar ve tarayıcılar hakkında bilgi edindiniz. Ayrıca, Selenium WebDriver kütüphanesini projeye nasıl ekleyeceğinizi ve basit bir botu nasıl yazacağınızı öğrendiniz. Bu bilgilerle, kendi projelerinizde Selenium WebDriver kullanarak daha verimli ve etkili otomasyonlar gerçekleştirebilirsiniz.

Author

Bilgisayar programcılığı bölümü mezunuyum. Web ve masaüstü uygulama geliştiricisiyim. C#,.Asp.Net Core, JQuery, Ajax, Entity Framework konularında bilgi sahibiyim. Bu sitenin kurucusuyum . Aynı zamanda şiir yazmayı seven birisiyim. 2023 yılında "Gökkuşağının Koyu Tonu" adlı ilk şiir kitabım yayınlandı. Yazmaya devam ediyorum.
Yorum Yap
Yorumlar (0)