Merhaba arkadaşlar öncelikle şunu söyleyim internetten bir siteyi açınca sorunlar yaşıyorum.
Bazen 5 saniyede açıyor time.sleep(5) saniye veriyorum bu seferde 10 saniyede açıyor program hata veriyor arkadaşlar burda saniye bazlı değilde işlem bazlı bekleme yaptırabilir miyiz örnek site açıldı işlemi yaptı diğer işleme geçsin tarzından.
Selenium ile çalışıyorsanız sanırım onda elementler yüklenene kadar bekleyen bir fonksiyon vardı.
Selenium kullanıyorsanız, varsayılan olarak get() methodu, webdriver tarafından sayfa yukleninceye kadar bekler, sayfa yuklendikten sonra sıradaki kodları islemeye baslar. Ancak isin icine ajax request, frame, web app gibi etkenler girince, kaynak koda veya dogru kaynak koda erisim sıkıntıları dogabilir. Cozum icin kod ve site paylasmalısınız.
driver.iplicitly_wait(second)
(driver
olarak örneklendiği varsayılmıştır)
Teşekkür ederim kontrol edeceğim en kısa zamanda.
Hocam bu kodu time.sleep gibi kullanmak istediğim yerlerde kullanacağım değilmi
Bu element yüklenene kadar beklemeyebilir.
Nasıl yani. explicit mi önerirsiniz?
Gerçi explicit ve implicit arasındaki farkı da merak etmedim değil
time.sleep() fonksiyonu verilen saniye kadar thread’i durdurur.
imlicitly_wait ise selenium kütüphanesinde kullanılan ve amacı verilen saniye kadar elementin beklemesini sağlar. Eğer element erken yüklenirse beklemeyi keser.
Şöyle:
Forumda buna benzer birden fazla soru olması lazım. @deliolacagim soru sormadan önce halihazırda sorulmuş olup olmadığını kontrol edin.
Eger element hic yuklenmezse ne olur? veya yuklenir fakat Selenium erisemezse?
Edit:
sorunumu cozdu, tesekkurler
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.firefox.options import Options
options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)
driver.get('siteadi.com')
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "nws-cent")))
print(element.text)
import implicitly_wait
ModuleNotFoundError: No module named ‘implicitly_wait’
modül yok diyor modüle baktım bulamadım nasıl import edebilirim.
Iyiymis, hangi provider’i kullaniyorsun?
AWS’de makinenin acilmasi, web sunucusunun devreye girmesi 1-2 dakika suruyor.
Nereye? Kime?
Hangi program?
Siteye GET request yapip 200 dondurmesini bekleyebilirsin.
Örnek bir kod verirmisin hocam.
Once sen ver.
Veya onu gectim, once sorularimi cevapla.
Hocam benim sorduğum yanlış bir şeyse kusura bakmayın benim sorduğum şu kod vermekle alakalı olarak diyorsanız onuda söyleyim hocam örnek olarak
browser.get(“https//google.com”)
time.sleep(10) #burada mecburen 10 saniye bekliyor bende beklemeden site açılır açılmaz boş boş beklemek istemiyorum amacım bu.
ustad, arkadasların paylasımlarından sonra,
bu bilginin dogrulugu konusunda kafam karıstı, acaba yanlıs mı hatırlıyorum/biliyorum?
Ben HTTP GET metodundan bahsediyorum. Bir URL’ye GET yapip 200 dondurmesini beklemek o “sitenin” acik olup olmadigini anlamak icin kullanilan cok yaygin bir yontem. Sayfa icerigi buyukse HEAD de kullanilabiliyor.
Arkadaslar Selenium’dan bahsediyor sanirim. OP’nin neden bahsettigini de bilmiyoruz.
Bence bu kaynak sorunu çözecek.
Bundan sonra da beklemeyi yaparsınız.
Sorunun tam olarak ne oldugu belli degil ki
Yanlış anlamadıysam sorun şöyle; İnternet hızı, sayfaların yüklenme sürelerinde değişikliğe yol açar. Ancak sayfa açıldıktan belli bir süre sonra bazı işlemler için beklememiz gerekiyor. 5 saniye sonra işlemleri başlatacağımızı düşünelim. Hız çok düşük olduğu zaman sayfa 5 saniye içerisinde load olamayacak. İşlem nasıl başlayacak peki? İşte bu yüzden sayfanın kesinlikle yüklendiğini bilmemiz ve ondan sonra işlem yapmamız lazım. Doğru mu anlamışım @deliolacagim ?