C# Mini Seriler #1 [Selenium Nedir? Nasıl Kullanılır?]

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Banlı Üye
Katılım
7 Nis 2020
Mesajlar
116
Çözümler
3
Tepki puanı
18
Yaş
30
6 HİZMET YILI
Herkese Selamlar,
Selenium bir Web Otomasyon aracı olarak kullanılmasının yanı sıra C# üzerinden kendi yazdığınız web sitenizi test etmek veya başka web siteleri üzerinden uygulama geliştirmek için kullanılabilir. Yani Web tabanlı oyunlarda işlemlerinizi sizin yerinize halledecek botlar yazabilirsiniz. Bu konuda anlatmak istediğim Selenium'a giriş olacak.

En önemli özelliklerinden biri Forma eklenen WebBrowser aracı ie tabanlı bir tarayıcı ve bir çok yerde desteklenmeyebiliyor. Bu yüzden hem sayfadaki scriptlerin tam çalışması için hemde içeriklerin tam görüntülenmesi için Selenium en uygun çözüm. Python üzerinde de anlatım yapacağım ileride ilgisi olan arkadaşlar varsa python syntax olarak c# tan daha basit bir dil olduğu için burada yapacağımız çoğu işlemi daha kısa kodlarla yapmamıza olanak tanıyor olacak.

Kullanmaya başlayalım o zaman

Projenize nasıl eklersiniz önce bunu anlatayım
Bağlantıları görmek için lütfen Giriş Yap


NuGet Paketlerinde Gözat sekmesinden indirmemiz gereken iki paket şunlardır
Bağlantıları görmek için lütfen Giriş Yap


Projemizde kütüphaneleri kullanmak için
C#:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

Kurulumumuz tamamlandı kodlamaya geçebiliriz.

Öncelikle bilmeniz gerekenler
İlk olarak WebDriver dediğimiz şeyler her tarayıcı için mevcut neredeyse (Opera, Firefox, Chrome ve Safari gibi).
Bir WebDriver nesnesi oluşturmak yani aşağıdaki tek satırlık kod bize bir tarayıcı açar
C#:
IWebDriver driver = new ChromeDriver();

İkincisi Web sayfalarına yönlendirme yapmamız gerekmektedir. Aynı VS'nun WebBrowser aracı gibi Navigate() kullanıyoruz.
C#:
 driver.Navigate().GoToUrl("https://www.facebook.com/");

Tarayıcımızı açtık facebook.com a yönlendirme yaptık buraya kadar her şey güzel.
Peki biz bu siteye nasıl giriş yapılmasını sağlayacağız; Web sayfasındaki elementlerin className, Id, name yada XPath değerlerini bilmemiz lazım.
Karşımıza iki seçme fonksiyonu çıkıyor biri "FindElement()" tekil elementleri seçmemize yarıyor.
Diğeri "FindElements()" bu da tahmin edeceğiniz üzere çoğul elementleri seçmemize yarıyor.

Bazı sitelerde Id ile elementleri tek tek seçebiliriz bunun için kullanacağımız kod
C#:
IWebElement element = driver.FindElement(By.Id("IDDegeri"));

Bazen ise id değeri olmaz onun yerine class veya name kullanırlar onlar için ise
C#:
IWebElement element = driver.FindElement(By.ClassName("ClassDegeri"));
IWebElement element2 = driver.FindElement(By.Name("NameDegeri"));

Bir tane de FindElements() ile birden fazla element seçelim. Burada element sayısı 1 olmadığı için "var" kullandık.
C#:
var elements = driver.FindElements(By.ClassName("ClassName"));
//bu elementlere erişim sağlamak için aşağıdaki döngü kullanılabilir
foreach(IWebElement element in elements) {
    //işlemler
}

Tabi CSS Selector ve XPath ile de seçimler yapabilirsiniz.
Her elemente XPath kullanarak ulaşabilirsiniz. Bazılarımız için yeni bir terim olabilir o yüzden açıklayayım.
XPath bir Elemente en açık şekilde ulaşmamıza yarayan genelde XML de kullanılan bir standarttır.
Kısaca örnek vermek gerekirse //input[@id="email"] bu ufak kod id'si email olan input elementine ulaşmamızı sağlar.
Uzun bir örnekte verelim pekişsin iyice :) //a[@href="/pages/create/?ref_type=registration_form"] href değeri bu olan bir a elementine ulaşmamıza yarıyor bu kod.
Tabi bunu sizin yapmanıza gerek yok bi Chrome eklentisi kullanarak bunları otomatik oluşturabilirsiniz.
Bağlantıları görmek için lütfen Giriş Yap

Bi elemente sağ tıklayıp RexPath tuşuna basarak bu kodlara ulaşabilirsiniz sizin için de daha kolay olur.

Facebook'a giriş yapmak için yazdığımız toplam kod
C#:
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://www.facebook.com/");

IWebElement Email = driver.FindElement(By.Id("email"));
IWebElement Pass = driver.FindElement(By.Id("pass"));
IWebElement GirisButonu = driver.FindElement(By.XPath("//input[@value and @data-testid]"));

Email.SendKeys("[email protected]");
Pass.SendKeys("1234567890");
GirisButonu.Click();

//İşlemleriniz bittikten sonra driver.Quit(); ile çıkmayı unutmayın

Merak ettiklerinizi, alırsanız hataları veya eksik anlattığım şeyler varsa sorabilirsiniz.
 
Seçkin Üye
Katılım
20 Şub 2019
Mesajlar
320
Çözümler
5
Tepki puanı
20
Ödüller
5
7 HİZMET YILI
Teşekkürler sayenizde güzel bir arşiv oluşturdum. Emeğinize sağlık.
 
Leydim
Uzman Üye
Katılım
11 Nis 2020
Mesajlar
177
Çözümler
5
Tepki puanı
16
Ödüller
3
6 HİZMET YILI
Teşekkürler
 
Uzman Üye
Katılım
25 Kas 2018
Mesajlar
216
Tepki puanı
41
Ödüller
7
7 HİZMET YILI
Herkese Selamlar,
Selenium bir Web Otomasyon aracı olarak kullanılmasının yanı sıra C# üzerinden kendi yazdığınız web sitenizi test etmek veya başka web siteleri üzerinden uygulama geliştirmek için kullanılabilir. Yani Web tabanlı oyunlarda işlemlerinizi sizin yerinize halledecek botlar yazabilirsiniz. Bu konuda anlatmak istediğim Selenium'a giriş olacak.

En önemli özelliklerinden biri Forma eklenen WebBrowser aracı ie tabanlı bir tarayıcı ve bir çok yerde desteklenmeyebiliyor. Bu yüzden hem sayfadaki scriptlerin tam çalışması için hemde içeriklerin tam görüntülenmesi için Selenium en uygun çözüm. Python üzerinde de anlatım yapacağım ileride ilgisi olan arkadaşlar varsa python syntax olarak c# tan daha basit bir dil olduğu için burada yapacağımız çoğu işlemi daha kısa kodlarla yapmamıza olanak tanıyor olacak.

Kullanmaya başlayalım o zaman

Projenize nasıl eklersiniz önce bunu anlatayım
Bağlantıları görmek için lütfen Giriş Yap


NuGet Paketlerinde Gözat sekmesinden indirmemiz gereken iki paket şunlardır
Bağlantıları görmek için lütfen Giriş Yap


Projemizde kütüphaneleri kullanmak için
C#:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

Kurulumumuz tamamlandı kodlamaya geçebiliriz.

Öncelikle bilmeniz gerekenler
İlk olarak WebDriver dediğimiz şeyler her tarayıcı için mevcut neredeyse (Opera, Firefox, Chrome ve Safari gibi).
Bir WebDriver nesnesi oluşturmak yani aşağıdaki tek satırlık kod bize bir tarayıcı açar
C#:
IWebDriver driver = new ChromeDriver();

İkincisi Web sayfalarına yönlendirme yapmamız gerekmektedir. Aynı VS'nun WebBrowser aracı gibi Navigate() kullanıyoruz.
C#:
 driver.Navigate().GoToUrl("https://www.facebook.com/");

Tarayıcımızı açtık facebook.com a yönlendirme yaptık buraya kadar her şey güzel.
Peki biz bu siteye nasıl giriş yapılmasını sağlayacağız; Web sayfasındaki elementlerin className, Id, name yada XPath değerlerini bilmemiz lazım.
Karşımıza iki seçme fonksiyonu çıkıyor biri "FindElement()" tekil elementleri seçmemize yarıyor.
Diğeri "FindElements()" bu da tahmin edeceğiniz üzere çoğul elementleri seçmemize yarıyor.

Bazı sitelerde Id ile elementleri tek tek seçebiliriz bunun için kullanacağımız kod
C#:
IWebElement element = driver.FindElement(By.Id("IDDegeri"));

Bazen ise id değeri olmaz onun yerine class veya name kullanırlar onlar için ise
C#:
IWebElement element = driver.FindElement(By.ClassName("ClassDegeri"));
IWebElement element2 = driver.FindElement(By.Name("NameDegeri"));

Bir tane de FindElements() ile birden fazla element seçelim. Burada element sayısı 1 olmadığı için "var" kullandık.
C#:
var elements = driver.FindElements(By.ClassName("ClassName"));
//bu elementlere erişim sağlamak için aşağıdaki döngü kullanılabilir
foreach(IWebElement element in elements) {
    //işlemler
}

Tabi CSS Selector ve XPath ile de seçimler yapabilirsiniz.
Her elemente XPath kullanarak ulaşabilirsiniz. Bazılarımız için yeni bir terim olabilir o yüzden açıklayayım.
XPath bir Elemente en açık şekilde ulaşmamıza yarayan genelde XML de kullanılan bir standarttır.
Kısaca örnek vermek gerekirse //input[@id="email"] bu ufak kod id'si email olan input elementine ulaşmamızı sağlar.
Uzun bir örnekte verelim pekişsin iyice :) //a[@href="/pages/create/?ref_type=registration_form"] href değeri bu olan bir a elementine ulaşmamıza yarıyor bu kod.
Tabi bunu sizin yapmanıza gerek yok bi Chrome eklentisi kullanarak bunları otomatik oluşturabilirsiniz.
Bağlantıları görmek için lütfen Giriş Yap

Bi elemente sağ tıklayıp RexPath tuşuna basarak bu kodlara ulaşabilirsiniz sizin için de daha kolay olur.

Facebook'a giriş yapmak için yazdığımız toplam kod
C#:
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://www.facebook.com/");

IWebElement Email = driver.FindElement(By.Id("email"));
IWebElement Pass = driver.FindElement(By.Id("pass"));
IWebElement GirisButonu = driver.FindElement(By.XPath("//input[@value and @data-testid]"));

Email.SendKeys("[email protected]");
Pass.SendKeys("1234567890");
GirisButonu.Click();

//İşlemleriniz bittikten sonra driver.Quit(); ile çıkmayı unutmayın

Merak ettiklerinizi, alırsanız hataları veya eksik anlattığım şeyler varsa sorabilirsiniz.

Selenium ile proxy kullanımını anlatabilir misin?
 
Seçkin Üye
Katılım
15 Mar 2016
Mesajlar
310
Çözümler
2
Tepki puanı
7
Ödüller
7
Yaş
24
10 HİZMET YILI
çok emek vermişsin hocam emeğine sağlık
 
Seçkin Üye
Katılım
6 Eki 2018
Mesajlar
306
Çözümler
1
Tepki puanı
76
Ödüller
7
7 HİZMET YILI
teşekkürler dostum çok iyi anlatmışsın eline sağlık
 
Leydim
Uzman Üye
Katılım
11 Nis 2020
Mesajlar
177
Çözümler
5
Tepki puanı
16
Ödüller
3
6 HİZMET YILI
Yakında bir uygulama paylaşacağım orda useragent referer proxy kullanımını göstereceğim
 
Seçkin Üye
Katılım
23 Mar 2020
Mesajlar
300
Çözümler
1
Tepki puanı
10
Ödüller
5
Yaş
35
6 HİZMET YILI
Bu bilgiyi sağladığınız için teşekkür ederim
 
  • Konuyu başlatan
  • Yasaklandı
  • #11
Banlı Üye
Katılım
7 Nis 2020
Mesajlar
116
Çözümler
3
Tepki puanı
18
Yaş
30
6 HİZMET YILI
PROGRAMMER
Seçkin Üye
Katılım
26 Ara 2015
Mesajlar
401
Çözümler
1
Tepki puanı
165
Ödüller
9
Yaş
27
10 HİZMET YILI
Bu bilgiyi başka yerde bulamam, ellerine sağlık güzel anlatım.
 
Onaylı Üye
Katılım
22 Ocak 2020
Mesajlar
93
Çözümler
1
Tepki puanı
3
Ödüller
3
Yaş
34
6 HİZMET YILI
teşekkürler dostum çok iyi anlatmışsın eline sağlık
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst