Selenium

Selenyum (Python) Kullanan Tarayıcı Otomasyonu

Selenyum (Python) Kullanan Tarayıcı Otomasyonu
SELENYUM birçok programlama dili aracılığıyla web tarayıcısını kontrol etmek için kullanılan web tabanlı ve açık kaynaklı bir araçtır. Üçüncü taraf bir araçtır ve birçok programlama dili için kullanılabilir (e.g. Java, Python, C#, PHP vb.). Hemen hemen tüm tarayıcılar için desteğe sahiptir. Bu öğreticide, Python bu aracı kullanmak için rahat bir ortam sağladığı için Selenium'un Python ile nasıl kullanılacağına bakacağız. Python için Selenium API, programınızın tarayıcınızı bir insanın yaptığına benzer şekilde doğrudan kontrol etmesini sağlar. Sizin için yeni sekmeler açabilir, bilgilerinizi doldurabilir, form gönderebilir, farklı bağlantılara tıklayabilir ve diğer benzer işlemleri yapabilir. Burada Python ile Selenium kullanarak web tarayıcımızı nasıl otomatikleştireceğimizi göreceğiz.

Selenyum Kurulumu

Kullanmadan önce SELENYUM python'da modül, onu kurmamız gerekiyor. Yüklemek için terminalde aşağıdaki komutu çalıştırın.

pip yükleme selenyum

VEYA

pip3 selenyum yükleyin

Bu yüklenecek SELENYUM modül ve şimdi kullanıma hazır.

Web Sürücüleri

SELENIUM modülünü kullanarak web tarayıcısını otomatikleştirmeden önce, seçilen tarayıcının web sürücüsü gereklidir. Chrome Tarayıcıyı otomatikleştirmek için Chrome web sürücüsüne sahip olmalıyız. Web sürücü dosyasının yerleştirildiği yol argüman olarak iletilir. Web sürücüsü, bir protokol aracılığıyla web tarayıcısıyla etkileşime girer. Farklı tarayıcıların Web sürücülerini indirmek için aşağıdaki bağlantıya gidin.

https://www.selenyum hq.kuruluş/indir/

Başlarken

Gerekli modülleri kurduktan sonra python CLI'yi açıp tarayıcınız ile oynamaya başlayabilirsiniz. Öyleyse önce web sürücüsünü ve diğer modülleri içe aktaralım, bu modüller ve sınıflar Python programınızın tarayıcınıza tuş vuruşlarını ve diğer bilgileri göndermesine izin verecektir.

C:\Users\Usama Azad>python
piton 3.6.4 (v3.6.4:d48eceb, 19 Aralık 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] win32'de
Daha fazla bilgi için "yardım", "telif hakkı", "kredi" veya "lisans" yazın.
>>> selenyum içe aktarma web sürücüsünden
>>> selenyumdan.web sürücüsü.Yaygın.anahtarları içe aktarma Anahtarları
#krom sürücülerinize giden yol
>>> sürücü = web sürücüsü.Chrome('C:\chromedriver')

Bu, sizin için yeni bir Chrome tarayıcı penceresi açacaktır. Artık kullanarak herhangi bir web sitesine gitmek için selenyum alabilirsiniz .get() yöntemi. Bu yöntem web sitesini açar ve yüklenmesini bekler, ardından bir sonraki komutunuzu girebilirsiniz.

>>> sürücü.al("https://www.Facebook.com")

Bir Web Sayfasındaki Öğeler Nasıl Bulunur?

Aşağıdaki yöntemi kullanarak bir web sayfasında belirli bir öğeyi bulabiliriz.

Selenyum kullanarak Elemanları Bulma

Bir web sayfasındaki öğeleri bulmak için kullanırız 'find_element' yöntem. Aşağıdakiler 'find_element' yöntemleri mevcut SELENYUM.

Yukarıdaki yöntemleri kullanarak bir web sayfasındaki bir öğeyi bulabilir ve bunu otomasyon kodumuzda kullanabiliriz.

Farklı web sayfası öğelerine tıklamak

selenyumdaki click() yöntemi, yukarıdaki yöntemleri kullanarak bulduğunuz farklı bağlantılara ve düğme öğelerine tıklamak için kullanılabilir. Örneğin, “Unutulan hesap?” Facebook sayfasında

>>> link_button = sürücü.find_element_by_link_text('Unutulan hesap?')
>>> link_button.Tıklayın()

Özel Anahtarlar Gönder

Selenium ayrıca özel anahtarlar göndermenizi sağlayan bir modüle sahiptir (e.g, Enter, Escape, Page down, page up vb) web'de gezinirken. Aşağıdaki komutu kullanarak bu modülü içe aktarmanız gerekir

>>> selenyumdan.web sürücüsü.Yaygın.anahtarları içe aktarma Anahtarları

Örneğin, Wikipedia'da Amerika Birleşik Devletleri tarihi hakkında bir makale okuyorsunuz, ancak bir süre sonra AŞAĞI Ok tuşuna basamayacak kadar tembelsiniz. Selenium kullanarak bu anahtarı tarayıcıya göndererek otomatikleştirebilirsiniz

selenyum ithalat web sürücüsünden
selenyumdan.web sürücüsü.Yaygın.anahtarları içe aktarma Anahtarları
ithalat zamanı
sürücü = web sürücüsü.Chrome('C:\chromedriver')
#get yöntemini kullanarak makale bağlantısını aç
sürücü.get("https://tr.wikipedia.org/wiki/United_States")
#Sayfanın başından başla
eleman = sürücü.find_element_by_tag_name('html')
Doğru iken:
 
zaman.uyku(5)
element.send_keys(Anahtarlar.AŞAĞI)

Tarayıcı Nasıl Otomatikleştirilir

Bu bölümde, bazı kullanım durumlarının yardımıyla web tarayıcımızı nasıl otomatikleştireceğimizi göreceğiz.

Sosyal Medya Web Sitelerine Otomatik Olarak Giriş Yapın

Web otomasyonu ile giriş işlemlerinizi kolaylıkla otomatik hale getirebilirsiniz. Sosyal medya web sitelerinizi belirli bir saatte (örneğin akşam 8 gibi) düzenli olarak kontrol ediyorsanız, bu işlemi otomatikleştirmek iyi olur. Aşağıdaki iki sosyal medya sitesi 'facebook' ve 'twitter' kullanarak oturum açma işlemini otomatikleştirmek için kod aşağıdadır SELENYUM Python'da modül.

# web sürücüsünü selenyum modülünden içe aktarma
selenyum ithalat web sürücüsünden
 
# selenyumdan özel Anahtarları içe aktarma
selenyumdan.web sürücüsü.Yaygın.anahtarları içe aktarma Anahtarları
 
# 'Google-Chrome' için 'sürücü' nesnesi oluşturma
sürücü = web sürücüsü.Chrome('Chrome sürücüsüne giden yol')
 
# pencereyi büyütme
sürücü.maksimize_pencere()
 
#facebook'u açma
sürücü.almak('http://www.Facebook.com')
 
# 'id' özniteliğini kullanarak 'E-posta veya Telefon' öğesini bulma
kullanıcıAdı = sürücü.find_element_by_id('e-posta')
 
# facebook için kullanıcı adı veya e-posta girme
Kullanıcı adı.send_keys('Kullanıcı Adını/E-posta Adresini Girin')
 
# 'id' özniteliğini kullanarak 'Parola' öğesini bulma
şifre = sürücü.find_element_by_id('geçti')
 
#facebook için şifre girme
parola.send_keys("Şifreyi Girin")
 
# 'id' özniteliğini kullanarak 'giriş düğmesi' öğesini bulma ve 'Enter' tuşuna basma
sürücü.find_element_by_id('u_0_b').send_keys(Anahtarlar.GİRİŞ)
 
# twitter için yeni sekme açma
sürücü.yürütme_script("pencere.aç('http://www.twitter.com', 'tab2');")
 
# yeni sekmeye geçiş
sürücü.switch_to_window('tab2')
 
#'giriş' öğesini bulma ve üzerine tıklama
sürücü.find_element_by_xpath('//*[@id="doc"]/div/div[1]/div[1]/div[2]/div[1]').Tıklayın()
 
# 'Telefon, e-posta veya kullanıcı adı' öğesini bulma
kullanıcıAdı = sürücü.find_element_by_xpath('//*[@id="sayfa-konteyner"]/div/div[1]/form/
fieldset/div[1]/input')
 
# twitter için kullanıcı adı girme
Kullanıcı adı.send_keys('Kullanıcı Adını Girin')
 
# 'Parola' öğesini bulma
şifre = sürücü.find_element_by_xpath('//*[@id="sayfa-konteyner"]/div/div[1]/form/
alan kümesi/div[2]/input')
# twitter için şifre girme
parola.send_keys('Şifreyi Girin')
# 'giriş yap' düğmesini bulup üzerine tıklamak
sürücü.find_element_by_xpath('//*[@id="sayfa-konteyner"]/div/div[1]/form/div[2]/button')
.Tıklayın()

Yukarıdaki kod, tarayıcının sosyal medya web sitelerine giriş yapmasını otomatikleştirir. Öncelikle favori tarayıcımızın bir nesnesini yarattık. Bu kullanım örneğinde tarayıcı olarak 'Chrome'u aldık. Nesne oluşturmak için 'chromedriver'ımızın yolunu argüman olarak geçtik. Ardından facebook'un url'sini girdik ve öğeleri seçip kullanıcı adı ve şifreyi geçerek Facebook'a giriş yaptık.

Bundan sonra yeni bir sekme açtık ve twitter url'sini girdik. Bundan sonra ikinci sekme açık olmasına rağmen kodun kontrolü hala ilk sekmede olduğu için yeni sekmeye geçtik. Ardından öğeleri seçip kullanıcı adı ve şifreyi geçerek Twitter'a giriş yaptık.

Çevrimiçi Alışveriş Otomasyonu

Tarayıcı otomasyonunun bir başka güzel örneği de online alışveriş olabilir. Örneğin internetten kamera almak istiyorsunuz ama fiyatlar çok yüksek. Fiyatın sizin aralığınızda olup olmadığını her gün kontrol edersiniz. Bu görev kullanılarak otomatikleştirilebilir SELENYUM ve her gün fiyatı kontrol etmekten kaçınabilirsiniz. Aşağıdaki kod, istediğiniz ürünün fiyatının uygun olup olmadığını size mail yoluyla bildirecektir. İstediğiniz ürün indirimde ise program sizi e-posta ile bilgilendirecektir.

# web sürücüsünü selenyum modülünden içe aktarma
selenyum ithalat web sürücüsünden
 
# posta göndermek için smtplib modülünü içe aktarma
smtplib'i içe aktar
 
# e-posta yoluyla bilgilendirmek için posta işlevini tanımlama
tanımlı posta():
 
# alan adı ve port numarası ile gmail sunucusuna bağlantı kurulması. 
Bu, her e-posta sağlayıcısına göre değişir
bağlantı = smtplib.SMTP('smtp.gmail.com',587)
 
# sunucuya merhaba de
bağ.ehlo()
 
# şifreli TLS bağlantısı başlatılıyor
bağ.starttls()
 
# ana adresiniz ve şifrenizle gmail sunucusuna giriş yapın
bağ.login('gönderen mail adresi', 'şifre')
 
# kendinize fotoğraf makinesinin fiyatını bildiren bir mail göndererek
bağ.sendmail('gönderen mail adresi', 'alıcı mail adresi',
'Konu: Kamerayı Satın Alabilirsiniz')
 
# bağlantı sonlandırılıyor
bağ.çıkmak()
# posta işlevi burada biter
 
# bir argüman olarak chromedriver yolunu sağlayarak google chrome'u başlatma
sürücü = web sürücüsü.Chrome('chromedriver yolu')
 
# krom pencereyi simge durumuna küçültme
sürücü.simge durumuna küçült_pencere()
 
# açılış drazı.pk sitesi
sürücü.almak('https://www.daraz.pk/')
 
# kamera aramak için id niteliğini kullanarak arama çubuğunun yerini bulma
searchBar = sürücü.find_element_by_id('q')
 
#arama çubuğuna kamera yazma
arama çubuğu.send_keys('kamera')
 
# elementin xpath'ını kullanarak arama düğmesi öğesini bulma
arama = sürücü.find_element_by_xpath('//*[@id="topActionHeader"]/div/div[2]/div/div[2]
/form/div/div[2]/düğme')
 
#arama düğmesine tıklayarak
arama.Tıklayın()
 
# xpath niteliğini kullanarak istediğiniz ürünün yerini belirleme
ürün = sürücü.find_element_by_xpath('//*[@id="root"]/div/div[3]/div[1]/div/div[1]
/div[2]/div[1]/div/div/div[2]/div[2]/a')
 
# istediğiniz ürüne tıklayarak
ürün.Tıklayın()
 
# xpath niteliğini kullanarak fiyatın yerini belirleme
fiyat = sürücü.find_element_by_xpath('//*[@id="module_product_price_1"]/div/div/span')
 
# fiyat öğesinden metin çıkarma. Bu, 'Rs gibi ürünün fiyatını verir. 24.500'
fiyat = fiyat.Metin
 
# fiyatı dizgeye dönüştürmek
Fiyat = str(fiyat)
 
# boş bir dizi tanımlama. Bu, '24500' gibi rakamlardan fiyat çıkarmak için kullanılacaktır
'R'ler oluştur. 24.500'
sayı = []
 
# for döngüsünü kullanarak fiyat dizisinin tüm girişlerini tek tek okumak
fiyat olarak x için:
 
# fiyatta sadece rakam istediğimiz için girişin rakam olup olmadığını kontrol etmek
eğer x.isdigit():
 
# num listesine sadece rakam ekleme
sayı.ekle(x)
 
# num list'in tüm girişlerini birleştirmek. Şimdi fiyat, yalnızca rakamları içeren bir dizedir
fiyat = ".katıl(sayı)
 
# fiyat dizisini tam sayıya dönüştürme
fiyat = int(fiyat)
 
# fiyatın uygun olup olmadığını kontrol etme
eğer fiyat <= 25000:
 
# fiyat hakkında sizi bilgilendirmek için arama posta işlevi
posta()
 
# tarayıcıyı kapat
sürücü.çıkmak()

Yukarıdaki kod daraz'ı açar.pk sitesi ve kamerayı arar ve fiyatı uygunsa e-posta yoluyla sizi bilgilendirir. Öncelikle ithal ettik SELENYUM ve SMTPLIB modüller. Ardından, arandığında fiyatın uygun olduğunu bildiren mail gönderen 'mail' fonksiyonunu tanımladık.

Bundan sonra chromedriver kullanarak chrome tarayıcıyı açtık ve 'daraz'ı aradık.pk'. Ardından, elemanları ve niteliklerini kullanarak istediğimiz ürünü buluruz. Elementlerin nasıl bulunduğu ve yerleştirildiği yukarıda açıklanmıştır. Aldığımız fiyat bir diziydi, bu yüzden bu diziyi tamsayıya dönüştürdük ve ardından fiyatın uygun olup olmadığını kontrol ettik. Fiyat uygunsa 'posta' işlevini arayın.

Cron işi oluşturma

Yukarıdaki iki otomasyon komut dosyasının belirli bir zamanda günde bir kez çalışması gerekir. Bunu cron işi kullanarak yönetebiliriz. crontab'a eklenen görevler belirli bir zamanda tekrar tekrar çalıştırılabilir. Yukarıdaki görevleri crontab'a eklemek için öncelikle Linux Terminalinde aşağıdaki komutu çalıştırın.

[e-posta korumalı]:~$ crontab -e

Yukarıdaki komut, düzenlemek için crontab dosyasını açacaktır. Dosyanın sonunda aşağıdaki komutu girin.

0 8 * * * python /path/to/python/script

Sağdan sola komuttan önce girişleri görüyoruz.

Yani bu komut her gün saat 8'de çalışacak.

Sonuç

Bu yazıda, nasıl kullanabileceğinizi tartıştık SELENYUM farklı teknikler kullanarak tarayıcınızı otomatikleştirmek için Python ile birlikte. Günlük rutin işlerinizi otomatik hale getirebilir, formları doldurabilir, eşyalarınızı indirebilir ve daha bir çok şeyi kullanabilirsiniz. Burada yalnızca iki örneği ele aldık, ancak bir insanın tarayıcıyla manuel olarak yapabileceği her şeyi otomatik hale getirebilirsiniz.

Linux'ta oyun oturumunuzu nasıl yakalar ve yayınlarsınız?
Geçmişte oyun oynamak sadece bir hobi olarak görülüyordu, ancak zamanla oyun endüstrisi teknoloji ve oyuncu sayısı açısından büyük bir büyüme gördü. Ç...
El Takibiyle Oynanabilecek En İyi Oyunlar
Oculus Quest kısa süre önce, kontrolörler olmadan elle takip etme harika fikrini tanıttı. Resmi olarak veya SideQuest aracılığıyla destek sağlayan sür...
Tam Ekran Linux Uygulamalarında ve Oyunlarında OSD Yerleşimi Nasıl Gösterilir
Tam ekran oyunlar oynamak veya uygulamaları dikkat dağıtmayan tam ekran modunda kullanmak, bir panelde veya görev çubuğunda görünen ilgili sistem bilg...