Python selenium headless mode ile ilgili tıklama sorunu

Merhaba selenium ile ilgili bir çalışmam var. Tarayıcı ekranda iken verdiğim komutlar çalışıyor. fakat headless modu aktif ettiğimde en son ( "bilanco.click() ") tıklama yapacağı yer çalışmıyor. İnternette birçok yol denedim ama olmadı. Ögeniz tıklanabilir değil uyarısı veriyor. Bu problemi çözmem için yardımcı olurmusunuz? Teşekkürler.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# from selenium.webdriver.chrome.service import Service
# from selenium.webdriver.support.ui import WebDriverWait
# from selenium.webdriver.common.by import By
# from selenium.webdriver.support import expected_conditions as EC
from time import sleep
# from selenium.webdriver.common.keys import Keys

options = Options()
options.headless = True
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('excludeSwitches', ['enable-logging'])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')
driver=webdriver.Chrome(executable_path=r"C:/Users/isaak/Desktop/TemelAnalizProgrami/chromedriver.exe",chrome_options=options)
url="https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/sirket-karti.aspx?hisse=ACSEL"
driver.get(url)
sleep(2)
driver.maximize_window()
sonfiyat=driver.find_element_by_xpath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[1]/div[1]/div[1]/div/div[2]/div/div/div[1]/div/div[1]/div/div[1]/div[1]/div[2]/span[1]")
print(sonfiyat.text)
sleep(2)
# Mali tabloların indirildiği kısım
hisse=driver.find_element_by_xpath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[1]/div/ul/li[4]/a")
hisse.click()
bilanco=hisse.find_element_by_xpath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[4]/div/div/div/div/div/div/div/div[1]/div[2]/div[1]/a")
# driver.execute_script("arguments[0].click();", bilanco)
bilanco.click()
sleep(2)
driver.close()



Merhaba.

Kusura bakmayın. Hızlı bir yanıt gönderdim. Daha dikkatli olacağım…

1 Beğeni

Bende calisiyor.

hisse'ye bastiktan sonra beklemek isteyebilirsin—sabit sureli, veya bilanco gorunur olana kadar.

Bu arada a#page-4 gibi bir selektor varken /html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[1]/div/ul/li[4]/a kullanmak istemeyebilirsin.

Hocam excele aktar kısmını headless mode aktif iken indirmiyor. Normal koşulda tarayıcı ekranda gözükürken sorun yok. Resim ekliyorum…


ilginiz için teşekkür ederim…

Ah pardon, headless’i gormemisim

Firefox’taki hata mesaji daha yardimci olabilir:
selenium.common.exceptions.ElementClickInterceptedException: Message: Element <a class="excelimage" href="javascript:;"> is not clickable at point (1182,531) because another element <div class="cookie-policy"> obscures it

driver.find_element(By.CSS_SELECTOR, 'a.cookie-policy-close').click() calisiyor

1 Beğeni

Çok teşekkür ederim hocam şimdi deniyorum.

Hocam ilişkilendiremedim sanırım…

driver.find_element(By.CSS_SELECTOR, 'a.cookie-policy-close').click()
hisse=driver.find_element_by_css_selector('#ctl00_ctl58_g_00f9bafa_387b_423c_b297_f8592de90819 > div.box-content > div.box-ddlist.text-left > a')

Hocam tekrar merhaba kodu yerleştirdim. Hata vermiyor bu sefer fakat dosyayı indirmiyor. Headless mode false olduğunda çalışıyor. True olduğunda çalışmıyor…

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
from selenium.webdriver.common.keys import Keys

options = Options()
options.headless = True
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('excludeSwitches', ['enable-logging'])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')
driver=webdriver.Chrome(executable_path=r"C:/Users/isaak/Desktop/TemelAnalizProgrami/chromedriver.exe",chrome_options=options)
url="https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/sirket-karti.aspx?hisse=ACSEL"
driver.get(url)
sleep(2)
driver.maximize_window()
# sonfiyat=driver.find_element_by_xpath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[1]/div[1]/div[1]/div/div[2]/div/div/div[1]/div/div[1]/div/div[1]/div[1]/div[2]/span[1]")
# print(sonfiyat.text)
# sleep(2)
# Mali tabloların indirildiği kısım
hisse=driver.find_element_by_id("page-4")
hisse.click()
sleep(1)

bilanco=driver.find_element_by_css_selector("#ctl00_ctl58_g_00f9bafa_387b_423c_b297_f8592de90819 > div.box-content > div.box-ddlist.text-left > a")
driver.find_element(By.CSS_SELECTOR, 'a.cookie-policy-close').click()
bilanco.click()
sleep(2)
driver.close()

Headless mode’da dosya indirme nasil olacak ki?

Profil ayarlarindan “sormadan indir” gibi bir sey yapman gerekmiyor mu?

Onun nasıl yapılacağını bilmiyorum hocam. Headless modda çalışırkende arka planda indirme yapar diye düşünmüştüm. Sormadan indir nasıl yaparım acaba bilgi verirmisiniz. Teşekkürler…

python - Is it possible to use element.click() on Selenium with Chrome even on headless mode? - Stack Overflow

Derki headless modda, doğal olarak pencerenin bir boyutu olmaz pencereye boyut vererek deneybilirsin.

Denedin mi dersen denemedim.

Deneyecek misin dersen denemeyeceğim.

Denersen bizimle paylaşabilirsin.

Ekran çözünürlük değerlerine göre verip deneyebilirsin, iki tane cevap var verdiğim linkte.

evet denedim hocam neredeyse tüm çözünürlüklerde denedim olmadı…

Sorunu çözdüm değerli arkadaşlar. Kodları paylaşayım belki birilerine yardımcı olur…

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from selenium.webdriver.common.by import By


options = Options()
# options.headless = True
options.add_argument("--window-size=1920,800")
options.add_argument('--disable-blink-features=AutomationControlled')    
options.add_argument("--headless")
# options.add_argument("--start-maximized")
options.add_argument("--no-sandbox")
options.add_argument("--disable-extensions")
options.add_argument('--disable-dev-shm-usage')    
options.add_argument("--disable-gpu")
options.add_argument('--disable-software-rasterizer')
options.add_argument("user-agent=Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166")
options.add_argument("--disable-notifications")

options.add_experimental_option("prefs", {"download.default_directory": "C:\\Users\\isaak\\Downloads","download.prompt_for_download": False,"download.directory_upgrade": True,"safebrowsing_for_trusted_sources_enabled": False,"safebrowsing.enabled": False})
driver = webdriver.Chrome(options=options, executable_path=r"C:/Users/isaak\Desktop/TemelAnalizProgrami/chromedriver.exe")

print ("Headless chrome Başlatıldı")
# driver.quit()
url="https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/sirket-karti.aspx?hisse=ACSEL"
driver.get(url)
time.sleep(2)
# driver.maximize_window()
# sonfiyat=driver.find_element_by_xpath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[1]/div[1]/div[1]/div/div[2]/div/div/div[1]/div/div[1]/div/div[1]/div[1]/div[2]/span[1]")
# print(sonfiyat.text)
# sleep(2)
# Mali tabloların indirildiği kısım
hisse=driver.find_element_by_id("page-4")
hisse.click()
bilanco=driver.find_element_by_xpath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[4]/div/div/div/div/div/div/div/div[1]/div[2]/div[1]/a")
driver.find_element(By.CSS_SELECTOR, 'a.cookie-policy-close').click()
bilanco.click()
time.sleep(2)
driver.get_screenshot_as_file("screenshot.png")
driver.close()

options kısmındaki bilgilerin eklenmesi ile beraber options.add.experimental.option kısmındaki “download.default_directory”: “C:\Users\isaak\Downloads” yolu belirtilirken 2 çizgili olacak \ şekilde ayarlanmalı…

saygılar