Selam dostlar pytonda varolan bir chrome profilinde işlem yapmak istiyorum ama beceremedim örneğim profil 6 yı açıyor ama sekmede işlem yaptırmıyor.

import tkinter as tk
from tkinter import ttk, messagebox, scrolledtext
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
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.common.keys import Keys
import threading
import psutil
import os
from datetime import datetime
import time

# ===================== AYARLAR =====================
CHROME_PATH = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
USER_DATA_DIR = r"C:\Users\İlayda\AppData\Local\Google\Chrome\User Data"
PROFILE_NAME = "Profile 6"
CHROMEDRIVER_PATH = r"C:\CD\chromedriver.exe"
INSTAGRAM_URL = "https://www.instagram.com/"
DOWNLOAD_XPATH = "/html/body/div[6]/div[1]/div/div[3]/div/div/div/div/div[2]/div/article/div/div[2]/div/div/div[2]/section[1]/span[4]/div/div[1]"
LOG_FILE = os.path.join(os.getcwd(), "instagram_log.txt")
# ===================================================

class InstagramDownloader:
    def __init__(self, root):
        self.root = root
        self.driver = None
        self.log_file = None

        self.setup_ui()
        self.setup_log()

    def setup_ui(self):
        self.root.title("Instagram Downloader")
        self.root.geometry("800x600")

        main_frame = ttk.Frame(self.root)
        main_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)

        control_frame = ttk.Frame(main_frame)
        control_frame.pack(fill=tk.X)

        ttk.Button(control_frame, text="Başlat", command=self.start_process).pack(side=tk.LEFT)
        ttk.Button(control_frame, text="Chrome Tümünü Kapat", command=self.close_all_chrome).pack(side=tk.LEFT, padx=10)

        ttk.Label(control_frame, text="Yeni Sekme Sayısı:").pack(side=tk.LEFT, padx=10)
        self.tab_count_var = tk.IntVar(value=1)
        ttk.Entry(control_frame, width=5, textvariable=self.tab_count_var).pack(side=tk.LEFT)

        ttk.Button(control_frame, text="Yeni Sekmeler Aç", command=self.open_new_tabs).pack(side=tk.LEFT, padx=10)

        self.status_label = ttk.Label(control_frame, text="Hazır", foreground="blue")
        self.status_label.pack(side=tk.LEFT, padx=10)

        self.log_text = scrolledtext.ScrolledText(main_frame, wrap=tk.WORD)
        self.log_text.pack(fill=tk.BOTH, expand=True)

        ttk.Label(main_frame, text=f"Log dosyası: {LOG_FILE}", foreground="green").pack()

        self.root.protocol("WM_DELETE_WINDOW", self.on_close)

    def setup_log(self):
        try:
            self.log_file = open(LOG_FILE, "a", encoding="utf-8")
            self.write_log(f"\n\n===== Oturum Başladı ({datetime.now().strftime('%Y-%m-%d %H:%M:%S')}) =====")
        except Exception as e:
            messagebox.showerror("Log Hatası", str(e))

    def write_log(self, msg):
        timestamp = datetime.now().strftime("[%H:%M:%S]")
        full_msg = f"{timestamp} {msg}"
        try:
            self.log_text.insert(tk.END, full_msg + "\n")
            self.log_text.see(tk.END)
        except:
            pass
        if self.log_file:
            try:
                self.log_file.write(full_msg + "\n")
                self.log_file.flush()
            except:
                pass

    def update_status(self, msg, color="blue"):
        self.status_label.config(text=msg, foreground=color)

    def start_process(self):
        threading.Thread(target=self.run_browser, daemon=True).start()

    def run_browser(self):
        try:
            self.update_status("Başlatılıyor...", "orange")
            self.write_log("Başlatılıyor...")

            # Chrome açık mı kontrol et
            if self.is_chrome_open():
                self.write_log("Mevcut Chrome açık, kapatılmayacak.")
            else:
                self.write_log("Chrome açık değil, yeni profille açılıyor.")

            options = Options()
            options.binary_location = CHROME_PATH
            options.add_argument(f"user-data-dir={USER_DATA_DIR}")
            options.add_argument(f"--profile-directory={PROFILE_NAME}")
            options.add_argument("--start-maximized")
            options.add_argument("--disable-blink-features=AutomationControlled")

            service = Service(CHROMEDRIVER_PATH)
            self.driver = webdriver.Chrome(service=service, options=options)
            
            # Driver başarıyla oluşturuldu mu kontrol et
            if self.driver:
                self.write_log("WebDriver başarıyla oluşturuldu")
                self.update_status("Chrome açıldı", "green")
            else:
                raise Exception("WebDriver oluşturulamadı")

            self.write_log(f"{INSTAGRAM_URL} adresine gidiliyor...")
            self.driver.get(INSTAGRAM_URL)

            self.write_log("İndirme butonu bekleniyor...")
            button = WebDriverWait(self.driver, 30).until(
                EC.element_to_be_clickable((By.XPATH, DOWNLOAD_XPATH))
            )
            button.click()
            self.write_log("Butona tıklandı! İşlem tamamlandı.")
            self.update_status("İndirme Başladı!", "green")

        except Exception as e:
            self.write_log(f"HATA: {str(e)}")
            self.update_status("Hata oluştu!", "red")
            self.driver = None  # Hata durumunda driver'ı None yap
            messagebox.showerror("Hata", f"İşlem sırasında hata oluştu:\n\n{str(e)}")

    def is_chrome_open(self):
        # Chrome.exe çalışan var mı diye bak
        for proc in psutil.process_iter(['name']):
            if proc.info['name'] and proc.info['name'].lower() == 'chrome.exe':
                return True
        return False

    def close_all_chrome(self):
        # Tüm chrome.exe ve chromedriver.exe süreçlerini kapat
        count = 0
        for proc in psutil.process_iter(['name']):
            try:
                if proc.info['name'] and proc.info['name'].lower() in ('chrome.exe', 'chromedriver.exe'):
                    proc.kill()
                    count += 1
                    self.write_log(f"Sonlandırıldı: {proc.info['name']}")
            except:
                pass
        self.update_status(f"{count} Chrome işlemi kapatıldı.", "red")

    def open_new_tabs(self):
        # Driver kontrolü - hem None hem de session kontrolü
        if not self.driver:
            messagebox.showwarning("Uyarı", "Önce 'Başlat' butonuna basıp Chrome'u açın!")
            return
        
        # Driver session'ının hala aktif olup olmadığını kontrol et
        try:
            self.driver.current_url  # Bu, session aktif değilse hata verir
        except Exception:
            messagebox.showwarning("Uyarı", "Chrome session'ı kapatılmış! Lütfen tekrar 'Başlat' butonuna basın.")
            self.driver = None
            self.update_status("Chrome session kapatıldı", "red")
            return

        try:
            count = self.tab_count_var.get()
            if count < 1:
                messagebox.showwarning("Uyarı", "Lütfen 1 veya daha fazla sayı girin.")
                return

            self.update_status(f"{count} yeni sekme açılıyor...", "orange")
            self.write_log(f"{count} yeni sekme açılmaya başlanıyor...")

            # Mevcut sekme sayısını al
            current_handles = len(self.driver.window_handles)
            self.write_log(f"Mevcut sekme sayısı: {current_handles}")

            for i in range(count):
                try:
                    # JavaScript ile yeni sekme aç
                    self.driver.execute_script("window.open('', '_blank');")
                    time.sleep(1)
                    
                    # Yeni sekmeye geç
                    new_handles = self.driver.window_handles
                    if len(new_handles) > current_handles + i:
                        self.driver.switch_to.window(new_handles[-1])
                        # Instagram'a git
                        self.driver.get("https://www.instagram.com")
                        self.write_log(f"Sekme {i+1} açıldı ve Instagram'a yönlendirildi")
                        time.sleep(1)
                    else:
                        # Alternatif yöntem: body elementini bul ve Ctrl+T gönder
                        try:
                            body = self.driver.find_element(By.TAG_NAME, 'body')
                            body.send_keys(Keys.CONTROL + 't')
                            time.sleep(1)
                            
                            # Yeni sekmeye geç
                            if len(self.driver.window_handles) > current_handles + i:
                                self.driver.switch_to.window(self.driver.window_handles[-1])
                                self.driver.get("https://www.instagram.com")
                                self.write_log(f"Sekme {i+1} Ctrl+T ile açıldı")
                                time.sleep(1)
                        except Exception as ctrl_error:
                            self.write_log(f"Ctrl+T yöntemi başarısız: {str(ctrl_error)}")
                    
                except Exception as tab_error:
                    self.write_log(f"Sekme {i+1} açılırken hata: {str(tab_error)}")
                    continue

            # Son durumu kontrol et
            final_handles = len(self.driver.window_handles)
            opened_tabs = final_handles - current_handles
            
            if opened_tabs > 0:
                self.update_status(f"{opened_tabs} sekme açıldı.", "green")
                self.write_log(f"Toplam {opened_tabs} yeni sekme açıldı. Toplam sekme: {final_handles}")
            else:
                self.update_status("Sekme açılamadı!", "red")
                self.write_log("Hiçbir sekme açılamadı!")
            
            # İlk sekmeye geri dön
            if self.driver.window_handles:
                self.driver.switch_to.window(self.driver.window_handles[0])

        except Exception as e:
            self.update_status("Sekme açma hatası!", "red")
            self.write_log(f"Sekme açma genel hatası: {str(e)}")
            messagebox.showerror("Hata", f"Sekme açılırken hata oluştu:\n{e}")

    def on_close(self):
        try:
            if self.driver:
                self.driver.quit()
                self.write_log("Chrome kapatıldı.")
        except:
            pass

        try:
            if self.log_file:
                self.write_log("Uygulama kapatıldı.")
                self.log_file.close()
        except:
            pass

        self.root.destroy()

# Ana uygulama başlatıcı
if __name__ == "__main__":
    try:
        root = tk.Tk()

        w, h = 800, 600
        sw, sh = root.winfo_screenwidth(), root.winfo_screenheight()
        root.geometry(f"{w}x{h}+{(sw - w) // 2}+{(sh - h) // 2}")

        app = InstagramDownloader(root)
        root.mainloop()
    except Exception as e:
        print(f"Uygulama başlatılırken hata oluştu: {e}")