Selenium İle Fotoğraf Yükleme

Kullanıcı adı ve şifre ile girilen bir sayfada tabloda öğrenciler yer alıyor. Bu öğrencilerin sağ tarafında ise resim yükle butonu yer alıyor. Bu butonlara tıkladığımızda resim seç penceresi açılıyor ve seçilen resim karşı tarafa yükleniyor. Bu işlemi selenium ile otomatik yapabilir miyiz? asp.net ile tabloya otomatik butonlar oluşturulmuş. Bu butonların click olayı çalışırken resim adlarına göre resim karşıya aktarılacak ve kaydedilecek sisteme.

Merhaba, Selenium browser dışında bir yerde çalışmaz (Örneğin: Google Chrome’da çalışabilecekken Visual Studio’da çalışamaz.) ancak sanırım fotoğraf yüklemek yinede mümkün. İsterseniz şu linke bir bakın: https://stackoverflow.com/questions/19025308/how-to-upload-file-photo-using-upload-image-button-in-selenium-webdriver/19576661. Soru Java için sorulmuş ancak aşşağıda Python ile de bir çözüm gördüm, (hangi dil ile geliştirdiğinizi bilmiyorum ama Selenium Python’da çok kullanıldığından dolayı Python kullandığınızı varsayıyorum) zaten çözümü yazan kişiler açıklamasınıda yapmış bu yüzden Python’a uyarlayabileceğinizi düşünüyorum.

merhaba emrah , geçen gün selenium ile proje yapıyordum documents baya yararlı bilgiler veriyor yaptıgım projede instagrama giriyor butonlar atıklayarak , profilini girip takip ettiklerini ve etmediklerini bir dosyaya yazdırıyor içinde olmayanları başka bir dosyada oluşturuor , web’de search’lersen clon projeler görürsün ve keyif veriyor tek dikkat edilmesi ilk başta time.sleep() çünkü instagram bot oldugunu anladıgında ban atıyor ben time.sleep() lere time.sleep(4) yada 3 arası bişi veriyorum instagramUnfollow programı gibi düşüne bilirsin , fakat sadece selenium bildiğim kadarıyla "TARAYICILAR"DA çalışıyor .

Emrah, merhaba. Bu konuda aslında genel bir patternin olduğunu sanırım söylüyorsun. Bunu çözmek için Selenium ile beraber aynı zamanda çok genel bir web-scarping, beautiful soup gibi tool kullanarak, bu butonların X-Pathini bulman ve Selenium üzerinden bu X-Pathlere tıklayarak sanırım bu problemi çözebilirsin. Daha mantıklı veya verimli yöntem illakı vardır, fakat bu da yollardan birisi. Kolay gelsin :slight_smile:

Bahsettiğiniz veya örnek bir site ve istediğiniz bir resmi söylerseniz sizin için örnek kod yazabilirim.

Pattern böyle devam ediyor.


<table class="frmList" cellspacing="0" cellpadding="1" rules="all" id="dgListe" style="border-color:#CCCCCC;border-width:1px;border-style:solid;width:100%;border-collapse:collapse;">
<tr>
<td class="frmListBaslik" align="center">Okul No</td><td class="frmListBaslik" align="center">Adı</td><td class="frmListBaslik" align="center">Soyadı</td><td class="frmListBaslik" align="center" style="width:6%;">Resim</td><td class="frmListBaslik" align="center" style="width:6%;">Seç</td>
</tr><tr>
<td align="left">11</td><td align="left">Ahmet</td><td align="left">TOKSOY</td><td class="dataGridActive" align="center">
<img id="dgListe_imgResim_0" src="[OKLResimGosterListe.aspx?dataTC=10483764238](https://e-okul.meb.gov.tr/OrtaOgretim/OKL/OKLResimGosterListe.aspx?dataTC=10483764238)" style="color:#0000C0;border-width:1px;border-style:Solid;height:171px;width:133px;" />
</td><td class="dataGridActive" align="center" valign="bottom">
<input name="dgListe$ctl02$flResimSec" type="file" id="dgListe_flResimSec_0" class="submitButton" style="WIDTH: 64px; HEIGHT: 19px" size="1" onchange="Goster(0)" />
</td>
</tr><tr style="background-color:White;">
<td align="left">33</td><td align="left">Mehmet</td><td align="left">KESKİN</td><td class="dataGridActive" align="center">
<img id="dgListe_imgResim_1" src="[OKLResimGosterListe.aspx?dataTC=24172307668](https://e-okul.meb.gov.tr/OrtaOgretim/OKL/OKLResimGosterListe.aspx?dataTC=24172307668)" style="color:#0000C0;border-width:1px;border-style:Solid;height:171px;width:133px;" />
</td><td class="dataGridActive" align="center" valign="bottom">
<input name="dgListe$ctl03$flResimSec" type="file" id="dgListe_flResimSec_1" class="submitButton" style="WIDTH: 64px; HEIGHT: 19px" size="1" onchange="Goster(1)" />
</td>
</tr><tr>
<td align="left">73</td><td align="left">Fatma</td><td align="left">İNCEOĞLAN</td><td class="dataGridActive" align="center">
<img id="dgListe_imgResim_2" src="[OKLResimGosterListe.aspx?dataTC=10240740222](https://e-okul.meb.gov.tr/OrtaOgretim/OKL/OKLResimGosterListe.aspx?dataTC=10240740222)" style="color:#0000C0;border-width:1px;border-style:Solid;height:171px;width:133px;" />
</td><td class="dataGridActive" align="center" valign="bottom">
<input name="dgListe$ctl04$flResimSec" type="file" id="dgListe_flResimSec_2" class="submitButton" style="WIDTH: 64px; HEIGHT: 19px" size="1" onchange="Goster(2)" />
</td>
</tr><tr style="background-color:White;">
<td align="left">115</td><td align="left">Behiye</td><td align="left">GÜLER</td><td class="dataGridActive" align="center">
<img id="dgListe_imgResim_3" src="[OKLResimGosterListe.aspx?dataTC=24160297438](https://e-okul.meb.gov.tr/OrtaOgretim/OKL/OKLResimGosterListe.aspx?dataTC=24160297438)" style="color:#0000C0;border-width:1px;border-style:Solid;height:171px;width:133px;" />
</td><td class="dataGridActive" align="center" valign="bottom">
<input name="dgListe$ctl05$flResimSec" type="file" id="dgListe_flResimSec_3" class="submitButton" style="WIDTH: 64px; HEIGHT: 19px" size="1" onchange="Goster(3)" />
</td>
</tr><tr>
<td align="left">116</td><td align="left">Mehtap</td><td align="left">YEŞİLYURT</td><td class="dataGridActive" align="center">
<img id="dgListe_imgResim_4" src="[OKLResimGosterListe.aspx?dataTC=10594761058](https://e-okul.meb.gov.tr/OrtaOgretim/OKL/OKLResimGosterListe.aspx?dataTC=10594761058)" style="color:#0000C0;border-width:1px;border-style:Solid;height:171px;width:133px;" />
</td><td class="dataGridActive" align="center" valign="bottom">
<input name="dgListe$ctl06$flResimSec" type="file" id="dgListe_flResimSec_4" class="submitButton" style="WIDTH: 64px; HEIGHT: 19px" size="1" onchange="Goster(4)" />
</td>
</tr>

Login işlemini yaptım fakat açılan sayfadaki id lere nasıl ulaşacağım? Tekrar driver.get (url) yapınca çalışmıyor sessionlar.Oturumu kapatıyor.

from selenium import webdriver

driver = webdriver.Chrome(“chromedriver.exe”)

url = “https://mebbis.meb.gov.tr/

driver.get(url)

Login işlemi

driver.find_element_by_id(“txtKullaniciAd”).send_keys(“kullanici_adi”)
driver.find_element_by_id(“txtSifre”).send_keys(“parola”)

driver.find_element_by_id(“btnGiris”).click()

#Giriş başarılı sayfayı yönlendirdi www.mebbis.meb.gov.tr/index.aspx sayfasına
#Burada sayfa yönlendiği için açılan sayfada id lere ulaşamıyorum.
driver.find_element_by_id(“rptProjeler_ctl01_rptKullanicilar_ctl00_LinkButton1”).click()

Merhabalar selenium’a vaakıf değilim ancak Meb’in sistemlerine vaakıfım. Siz mebbis ile giriş yapıp oradan e-okula geçiş yapıyorsunuz. 2.kez yine mebbis üzerinden isteği yolluyorsunuz anladığım kadarıyla. Bir session oluştuğu için 2. İsteği e-okul.meb.gov.tr ye atabilirsiniz ya da mebbis girişi kullanmadan eokuldaki chaptayı elle girdirmek suretiyle direk e-okul üzerinden giriş yapabilirsiniz.

giriş işleminden sonra
driver.get(“e-okul.meb.gov.tr/giris.aspx”) ile
yönlendirdiğimde login sayfasına geliyor. Peki direk sayfayı chrome da manuel açsam açık olan sayfaya selenium ile müdahale edebilir miyim? Benim yapmak istediğimi şey MEBBİS > E-OKUL> Ortaöğretim Kurum İşlemleri > Resim İşlemleri > Hızlı Resim Ekle bölümüne gelmek :slight_smile: Buradan resimleri otomatik yükleteceğim.