Python İle Alakalı Birkaç Soru
-
İngilizce tutorial çok fazla var. Türkçe kaynak ta çok aslında. https://belgeler.yazbel.com/python-istihza/ Bakabilirsin.
Python veriyapılarını ve temel kütüphaneleri öğrenirsen daha sağlıklı olur. Kodlarına bakmadım ama belki de selenium yerine requests kütüphanesi işini görür böylece daha kolay ve performanslı birşeyler çıkar ortaya.
-
lepusmorris bunu yazdıRoark bunu yazdı
Hocam biraz açar mısın konuyu görsel vb var mı ya da kaynak dosya
mantık şu hocam. bir kayıt formu düşün step step ilerliyor. siteye proxy ile bağlanıcam. bunu da döngüye alıp üyelik oluşturucam. pythonda fake_useragent ve random ad & soyad oluşturan kütphaneler varmış bunu kullanabiliyorum.
şimdi siteye bağlandım.
ileri_btn = driver.find_element_by_xpath("//button[@value='İleri']") böyle bir element varsa
ad & soyad yazdırıp, ileri_btn'ye tıklattırıcam
tabiki bu ad soyad inputları var mı diye de kontrol etmek istiyorum hata payı olmaması için. birinden birini bulamadı mı driver.close() ya da driver.quit() fonksiyonlarından birini çalıştırabilir. arasında ne gibi fark var onu da bilmiyorum ama ikisi de aynı işe yarıyor sanırım.
try:
driver.find_element_by_xpath("//button[@data-store-id='3']").click() ileri_btn = driver.find_element_by_xpath("//button[@value='İleri']").click() # Adınız firstname = names.get_first_name() reg_firstname = driver.find_element_by_name("firstname") reg_firstname.send_keys(firstname) # Soyadınız lastname = names.get_last_name() reg_lastname = driver.find_element_by_name("lastname") reg_lastname.send_keys(lastname) # İleri driver.find_element_by_xpath("//button[@value='İleri']").click() # birthday_day random_birthday_day = random.randint(1, 29) select_birthday_day = Select(driver.find_element_by_name('birthday_day')) select_birthday_day.select_by_index(random_birthday_day) # birthday_month random_birthday_month = random.randint(1, 12) select_birthday_month = Select(driver.find_element_by_name('birthday_month')) select_birthday_month.select_by_index(random_birthday_month) # birthday_year random_birthday_year = random.randint(1980, 1995) select_birthday_year = Select(driver.find_element_by_name('birthday_year')) select_birthday_year.select_by_index(random_birthday_year) time.sleep(3) except NoSuchElementException: print("bulamadı")Hocam bazen saçmalayıp runtime hataları verebiliyor , o sebeple elementi yukarı aldım birde öyle dene. Selenium daha önce uğraşmadım ama senin burada ki hatan elemente ulaşamaması sonucu veriyor , html tarafında bir sıkıntın var mı ? yani bu input alanları ve butonlarında onları tekrar bir kontrol etmeni tavsiye ederim , inceleyerek belki gözünden kaçmış biryer olabilir html tarafına bak muhakkak. Formların dolu mu boşmu olduğunu validators mantıgı ile çözebilirsin , ama daha ilkel olarak , if else ile beraber'de çözebilirsin if( xx == "" ) : gibi. ya da direkt form tarafında html kullanıyorsan , html özelliğinide kullanabilirsin.
Close browser penceresini de kapatır işlemi bitirir, quit dedigin ise method çağrılmasını durdurur genelde form programlarında da böyledir sayfa.close() mantıgı gibi.
İşine yarayacak linkler :
içinde aynı soruna dair link ve quit close farkını yazan linkler mevcut.
https://stackoverflow.com/questions/47765195/unable-to-locate-element-no-such-element
https://stackoverflow.com/questions/39561188/xpath-is-correct-still-get-no-such-element-unable-to-locate-element' ( buna bir bak )
https://www.quora.com/What-is-the-difference-between-close-and-quit ( farkları )
-
hala kaynak arıyosan özelden yaz udemy derleri atayım hacı
-
formu birinci input, ikinci input diye de select edebilirsin. kimi site bot yazilmasin diye selector olarak kullanilabilecek attribute'lerin degerlerini farkli verebiliyor.
-
yol gösteren herkese teşekkürler. hepsine tek tek göz atıyorum. işlemlerde kısmi olarak ilerliyorum. özellikle bu webdriver önemli benim için.
-
şaka maka botu yazdım nerdeyse. çok az bir kısmı kaldı ama muhtemelen işi bilen biri kodları görse gözleri kanar :D:D
normalde web üzerine çalışıyorum. pythonun da üzerine düşmeli miyim sizce? fakat çok sıkıntılı bir dil gibi geldi bana.
-
Python a sıkıntı dil mi diyorsun ? Aman çarpılırsın hocam ;)
-
python sıkıntılı değil ama döküman eksiği çok bir dil bence.
Birde python2'den python3'e geçişte değişen bazı durumlar var anladığım kadarıyla. Bu yüzden bazı dökümanlar birbirine uymayabiliyor.
Yazılımcı olmayan birinin gözünden eyyorlamam bu kadar :)
-
NoktaliVirgul bunu yazdı
python sıkıntılı değil ama döküman eksiği çok bir dil bence.
Birde python2'den python3'e geçişte değişen bazı durumlar var anladığım kadarıyla. Bu yüzden bazı dökümanlar birbirine uymayabiliyor.
Yazılımcı olmayan birinin gözünden eyyorlamam bu kadar :)
Hocam python da ingilizce bir çok kaynak bulabilirsin
selenium için daha kolay xpath almak istiyorsanız chrome eklentilerinden chropath kullanın. -
bende araya iliştireyim
Şuan iş gereği bende birkaç uygulama yapıyorum ( yapmaya çalışıyorum)
python sürümü 2.7 kullanıyorum sizce 3 olarak mı yazmalıyım
Birde bu dilde döngüde iken, döngüdeki işlem hata verirse bir sonraki döngüye devam etmiyor
try :
except:
passyapıyorum yine olmuyor niyedir ki