Python'da Selenium kullanarak web otomasyonu yapabiliriz. Özellikle test otomasyonu, veri çekme (web scraping) ve bot yazılımı için kullanılır.
1) Selenium Kurulumu
Chrome için: ChromeDriver
Firefox için: GeckoDriver
WebDriver dosyasını indirip Python dosyanla aynı dizine koyabilirsin veya PATH'e ekleyebilirsin.
2) Tarayıcıyı Açma ve Siteye Gitme
Eğer tarayıcıyı gizli (headless) modda açmak istersen:
3) Sayfa Üzerinde İşlemler
Metin Girişi (Form Doldurma)
4) XPath ve CSS Selector Kullanımı
Bazen elementleri seçerken XPath veya CSS Selector kullanmak gerekebilir.
element = driver.find_element(By.XPATH, "//input[@name='q']") # XPath ile seçme
element = driver.find_element(By.CSS_SELECTOR, "input[name='q']") # CSS Selector ile seçme
5) Sayfadan Veri Çekme (Web Scraping)
Python:
titles = driver.find_elements(By.TAG_NAME, "h2") # Tüm h2 etiketlerini al
for title in titles:
print(title.text) # Başlıkları ekrana yazdır
6) Sayfa Kaydırma
Python:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Sayfanın en altına kaydır
7) Beklemeler (Waits)
Bazı sitelerde elementlerin yüklenmesini beklemek gerekebilir.
Sabit Bekleme (sleep)
Python:
import time
time.sleep(3) # 3 saniye bekle
Dinamik Bekleme (Explicit Waits)
Python:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "element_id")))
8) Çerezleri Yönetme
Python:
cookies = driver.get_cookies() # Mevcut çerezleri al
driver.add_cookie({"name": "test_cookie", "value": "12345"}) # Yeni çerez ekle
9) Dosya Yükleme ve İndirme
Python:
file_input = driver.find_element(By.NAME, "file")
file_input.send_keys("/path/to/file.txt") # Dosya yükle
10) Tarayıcıyı Kapatma
Python:
driver.quit() # Tarayıcıyı tamamen kapat
Küçük Bir Proje: Google'da Arama Yapıp Sonuçları Çekme
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.get("Google")
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python Selenium")
search_box.send_keys(Keys.RETURN)
time.sleep(3)
results = driver.find_elements(By.CSS_SELECTOR, "h3")
for result in results:
print(result.text)
driver.quit()
1) Selenium Kurulumu
Kod:
pip install selenium
Firefox için: GeckoDriver
WebDriver dosyasını indirip Python dosyanla aynı dizine koyabilirsin veya PATH'e ekleyebilirsin.
2) Tarayıcıyı Açma ve Siteye Gitme
Kod:
from selenium import webdriver
driver = webdriver.Chrome() # ChromeDriver'ı kullanıyoruz
driver.get("Google") # Google'ı aç
Kod:
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless") # Tarayıcıyı görünmez çalıştırır
driver = webdriver.Chrome(options=options)
driver.get("Google")
Kod:
from selenium.webdriver.common.by import By
driver.get("Welcome to Python.org")
buton = driver.find_element(By.LINK_TEXT, "Downloads")
buton.click() # Butona tıkla
Kod:
search_box = driver.find_element(By.NAME, "q") # Arama kutusunu seç
search_box.send_keys("Selenium Python") # Metin yaz
search_box.submit() # Enter tuşuna bas
Bazen elementleri seçerken XPath veya CSS Selector kullanmak gerekebilir.
element = driver.find_element(By.XPATH, "//input[@name='q']") # XPath ile seçme
element = driver.find_element(By.CSS_SELECTOR, "input[name='q']") # CSS Selector ile seçme
5) Sayfadan Veri Çekme (Web Scraping)
Python:
titles = driver.find_elements(By.TAG_NAME, "h2") # Tüm h2 etiketlerini al
for title in titles:
print(title.text) # Başlıkları ekrana yazdır
6) Sayfa Kaydırma
Python:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Sayfanın en altına kaydır
7) Beklemeler (Waits)
Bazı sitelerde elementlerin yüklenmesini beklemek gerekebilir.
Sabit Bekleme (sleep)
Python:
import time
time.sleep(3) # 3 saniye bekle
Dinamik Bekleme (Explicit Waits)
Python:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "element_id")))
8) Çerezleri Yönetme
Python:
cookies = driver.get_cookies() # Mevcut çerezleri al
driver.add_cookie({"name": "test_cookie", "value": "12345"}) # Yeni çerez ekle
9) Dosya Yükleme ve İndirme
Python:
file_input = driver.find_element(By.NAME, "file")
file_input.send_keys("/path/to/file.txt") # Dosya yükle
10) Tarayıcıyı Kapatma
Python:
driver.quit() # Tarayıcıyı tamamen kapat
Küçük Bir Proje: Google'da Arama Yapıp Sonuçları Çekme
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.get("Google")
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python Selenium")
search_box.send_keys(Keys.RETURN)
time.sleep(3)
results = driver.find_elements(By.CSS_SELECTOR, "h3")
for result in results:
print(result.text)
driver.quit()