Python, Selenium, Openpyxl Üçlüsünün Marifetleri
Bu kesitte python’ın openpyxl kütüphanesini kullanarak testlerimizde Excel formatındaki dosyaları okumak ve düzenlemek için neler yapabilirizi konuşacağız. Bu kütüphane , Excel’i neredeyse arayüzdeki gibi kullanabileceğimiz method ve parametreler sunmakla beraber style işlemleri içinde kullanılır fakat biz daha sade ve amaca yönelik bir örnekle ilerleyeceğiz.
Bir çok web proje içerisinde file import ve file export işlemlerini yapmaya ihtiyaç duyabiliyoruz. Bu noktada tarayıcı dışında, işletim sistemi kullanımı düzeyinde bazı aksiyonlar yaparak file upload ve download işlemlerini gerçekleştiriyoruz.Bu aksiyonlardan örnek olarak basit bir sürükle bırak ile bilgisayarımızdaki Excel formatındaki bir dosyayı websiteye aktarmak olabilir. Ama buradaki can alıcı nokta Excel’deki hücrelerde herhangi bir ekleme veya düzenleme işlemini python üzerinden anlamlı bir şekilde gerçekleştirmek.
Şimdi ise işin mutfağında neler göreceğiz bakalım…
Senaryomuz ;
1-) Bilgisayarımızın dosya sistemine erişerek son indirdiğimiz Excel dosyasını bulup openpyxl methodlarının ellerine teslim ederiz.
2-) Bilgisayarımızda bulunan Excel dosyasının pathini ve hangi modda açılacağını parametre olarak veririz.
3-) Bir önceki stepte ele aldığımız dosyayı aktif etmeli, yani arayüz olarak düşündüğümüzde, tıklayarak açıp dosya içeriğini görebildiğimiz hale getiririz.
4-) Daha sonra Excel’in içerisindeki herhangi bir sütuna erişerek ekleme veya değiştirme işlemini yapabiliriz.(A2 Hücresine ‘İşlem tamam’ yazacağız)
5–) Hazır hale getirdiğimiz Excel’i kaydederek upload işlemine hazır hale getirebiliriz.
6-) Excel’in hazır halini ele alıp, ilgili elemente yollayarak upload işlemini yapmış oluruz.
Öncelikle kullanacağımız kütüphaneleri projeye import ediyoruz.
import os
from openpyxl import load_workbook
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait# Webdriver tanitmakdriver = webdriver.Chrome()
driver.set_window_size(1440,900)#Beklenen kosul icin beklenecek zamanin tanimlanmasiwait = WebDriverWait(driver, 30)
driver.get('YOUR WEBSITE')wait.until(EC.presence_of_element_located((By.NAME,'Your Element in First Page'))#Dosyaya erisimi son indirdigimiz dosyayi handle ediyoruz.yourPath = "/Users/aliGoktas/Downloads/"
os.chdir(yourPath)
chooseFile = sorted(os.listdir(os.getcwd()), key=os.path.getmtime)
newestFile = chooseFile[-1]#Excel'i bulup aciyoruz.workBook = load_workbook(yourPath + newestFile)
activeDoc = workBook.active #Excel'in icerisine yazip kaydediyoruz.activeDoc["A2"].value = "Islem tamam"
workBook.save(activeDoc)#Son halini kaydettigimiz Excel'i upload edecegimiz ilgili input elementine klavye argumani olarak yolluyoruz.driver.find_element_by_name('Upload Input').send_keys(yourPath + activeDoc)#30 saniye boyunca Upload success yazisinin bulundugu element gorunur olmaz ise hata firlatir.try:
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,'Your
Success Flag Css Selector')
driver.quit()except:
raise Exception('Dosyaniz yuklenemedi. Tekrar deneyin')
driver.quit()
Yukarıda element attributelerini ve css selektörlerini kullanacağınız projeye göre değiştirmek sizin elinizde. Aksi taktirde spesifik bir yeri ifade etmeyecektir ve örnektir. Konu hakkında daha detaylı bilgilendirme ve geliştirme için buradan openpyxl’in resmi dökümantasyonuna ulaşabilirsiniz.
Şimdiden elinize sağlık :)
Sorularınız ve feedbackleriniz için lütfen ulaşın :
Linkedin : linkedin.com/in/alig96
Gmail : ali.gkts.14@gmail.com
Facebook | Twitter | Instagram | Slack | Kodcular |