import os import time import random import json from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected\_conditions as EC from selenium.webdriver.chrome.service import Service \#-----------AYARLAR\&XPATH'LER----------- EXAM\_START\_URL="[https://panel.evdekiakademi.com/](https://panel.evdekiakademi.com/)" GEMINI\_URL="[https://gemini.google.com/](https://gemini.google.com/)" SCREENSHOT\_PATH="question.png" XPATH\_PLUS\_BTN='/html/body/chat-app/main/side-navigation-v2/bard-sidenav-container/bard-sidenav-content/div\[2]/div/div\[2]/chat-window/div/input-container/div/input-area-v2/div/div/div\[2]/div/uploader/div/div/button/mat-icon' XPATH\_UPLOAD\_BTN='/html/body/div\[7]/div/div/mat-card/mat-action-list/images-files-uploader/button\[1]' XPATH\_FILE\_INPUT="//input\[@type='file']" XPATH\_PROMPT\_BOX='/html/body/chat-app/main/side-navigation-v2/bard-sidenav-container/bard-sidenav-content/div\[2]/div/div\[2]/chat-window/div/input-container/div/input-area-v2/div/div/div\[1]/div/div/rich-textarea/div\[1]/p' XPATH\_SEND\_BTN='/html/body/chat-app/main/side-navigation-v2/bard-sidenav-container/bard-sidenav-content/div\[2]/div/div\[2]/chat-window/div/input-container/div/input-area-v2/div/div/div\[3]/div/div\[2]/button' XPATH\_GEMINI\_ANSWER='//div\[contains(@class,"response-content")]//pre' PROMPT\_TEXT=''' Bu görselde çoktan seçmeli bir soru var. Cevabı sadece şu formatta JSON olarak ver: { "cevap": "D" } Eğer cevaptan emin değilsen yine de bir şık seç. Lütfen sadece bu JSON formatını kullan, başka hiçbir şey yazma. ''' def wait\_xpath(driver,xpath,timeout=20): return WebDriverWait(driver,timeout).until( EC.presence\_of\_element\_located((By.XPATH,xpath)) ) def wait\_clickable(driver,xpath,timeout=20): return WebDriverWait(driver,timeout).until( EC.element\_to\_be\_clickable((By.XPATH,xpath)) ) def random\_delay(a=1,b=3): time.sleep(random.uniform(a,b)) def main(): chrome\_options=Options() chrome\_options.add\_argument("--start-maximized") chrome\_options.add\_argument(r"--user-data-dir=C:\Users\sbatu\AppData\Local\Google\Chrome\User Data") chrome\_options.add\_argument(r'--profile-directory=Profile 2') driver\_path=os.path.join(os.getcwd(),"chromedriver.exe") service=Service(driver\_path) driver=webdriver.Chrome(service=service,options=chrome\_options) try: print("\[*] Başlangıç sayfası açılıyor. Sınavı manuel aç, soruyu tam görünür yap.") driver.get(EXAM\_START\_URL) while True: input("\[*] Soruyu tam olarak görünür yaptıysan ve ekran görüntüsü alınmasını istiyorsan ENTER'a bas...") print("\[*] Ekran görüntüsü alınıyor...") driver.save\_screenshot(SCREENSHOT\_PATH) print(f"\[*] '{SCREENSHOT\_PATH}' olarak kaydedildi.") print("\[*] Yeni sekmede Gemini açılıyor...") driver.execute\_script("window\.open('');") driver.switch\_to.window(driver.window\_handles\[-1]) driver.get(GEMINI\_URL) random\_delay(5,8) print("\[*] Artı (+) tuşuna basılıyor...") plus\_btn=wait\_clickable(driver,XPATH\_PLUS\_BTN) plus\_btn.click() random\_delay(1,2) print("\[*] Dosya yükle butonuna basılıyor...") upload\_btn=wait\_clickable(driver,XPATH\_UPLOAD\_BTN) upload\_btn.click() random\_delay(1,2) print("\[*] Dosya inputuna ekran görüntüsü gönderiliyor...") file\_input=wait\_xpath(driver,XPATH\_FILE\_INPUT) abs\_path=os.path.abspath(SCREENSHOT\_PATH) file\_input.send\_keys(abs\_path) random\_delay(6,10) print("\[*] JSON promptu yapıştırılıyor...") prompt\_box=wait\_xpath(driver,XPATH\_PROMPT\_BOX) prompt\_box.click() prompt\_box.send\_keys(PROMPT\_TEXT) random\_delay(1,2) send\_btn=wait\_clickable(driver,XPATH\_SEND\_BTN) send\_btn.click() print("\[*] Prompt gönderildi, Gemini cevabı bekleniyor...") answer\_elem=WebDriverWait(driver,40).until( EC.presence\_of\_element\_located((By.XPATH,XPATH\_GEMINI\_ANSWER)) ) answer\_text=answer\_elem.text.strip() print(f"\[*] Gemini cevabı:\n{answer\_text}") try: answer\_json=json.loads(answer\_text) secilen\_sik=answer\_json.get("cevap","").upper() if secilen\_sik not in\["A","B","C","D"]: raise ValueError("Geçersiz şık") except Exception: print("\[!] JSON parse hatası veya geçersiz cevap, rastgele şık seçiliyor.") secilen\_sik=random.choice(\["A","B","C","D"]) print(f"\[*] Seçilen şık: {secilen\_sik}") print("\[*] Ana sınav sekmesine dönülüyor...") driver.switch\_to.window(driver.window\_handles\[0]) random\_delay(1,2) print("\[*] Şıkları arıyor, seçim senin onayına bırakıldı...") options=driver.find\_elements(By.CLASS\_NAME,"secenek") matched=False for opt in options: text=opt.text.strip() if text.startswith(secilen\_sik): opt.click() matched=True print(f"\[*] '{secilen\_sik}' şıkkı seçildi. Onaylamak için kendin tıkla.") break if not matched: print("\[!] Şık bulunamadı, manuel seçmen gerekecek.") print("\[*] Yeni soruyu açıp aynı şekilde devam edebilirsin.") except KeyboardInterrupt: print("\[\*] Bot kapatıldı.") except Exception as e: print("\[!] Hata:",e) finally: driver.quit() if **name**=="**main**": main()