Sıkıntının sebebi çeviri sonucunun javascript ile dinamik olarak oluşturulması. Siz daha çeviri
sonucunu içeren element oluşturulmadan o elemeti bulmaya çalıştığınız için hata alıyorsunuz. Bu kod gerekli element gelene kadar bekliyor:
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time as tm
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
askWhich = input("İngilizce-Türkçe mi ? (E/H) \t")
kelimeSayisi = input("Çevirmek istediğin kelimelerin sayısı birden fazla mı (E/H) \t")
askWhat = input("Çevirmek istediğiniz kelimeyi girin \t")
driver = webdriver.Chrome()
tr_to_en_url = "https://translate.google.com/?hl=tr#view=home&op=translate&sl=tr&tl=en"
en_to_tr_url = "https://translate.google.com/?hl=tr#view=home&op=translate&sl=en&tl=tr"
driver.maximize_window()
# İngilizceden Türkçeye
if askWhich=="E" or askWhich=="e":
# Kelime sayısı 1 tane olanlar
if kelimeSayisi == "H" or kelimeSayisi=="h":
driver.get(en_to_tr_url)
## degistir = driver.find_element_by_xpath("/html/body/div[2]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[3]")
## degistir.click()
yaziYazma = driver.find_element_by_css_selector("#source")
yaziYazma.send_keys(askWhat)
try:
sonuc_parent = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".tlid-translation.translation")))
except:
print("Bağlantı sağlanamadı.")
sonuc = sonuc_parent.find_element_by_tag_name("span")
print(sonuc.text)
# Kelime sayısı birden fazla olanlar
elif kelimeSayisi=="E" or kelimeSayisi =="e":
pass
# Yanlış Değerler
else:
print("Yanlış değer girdiniz")
driver.close()
driver.quit()
Bir de çeviri için selenium kullanmak yavaş bir yöntem. Bu konudaki kütüphanelere göz atın: