Veriyi alamıyorum - Selenium

Merhaba arkadaşlar ,
Kullanıcıdan aldığı kelimeyi çeviren bir uygulama yapıyorum. Kişi İngilizce-Türkçe mi yoksa Türkçe - İngilizce mi bunu seçiyor ardından ben siteden kelimeyi yazdırıp çevirisini almaya çalışıyorum. Ayrıca birden fazla kelime alma seçeneğini de ekledim ama şu an kelime sayısı 1 tane olan ve İngilizce-Türkçe şeçeneği ile uğraşıyorum. Fakat kelimeyi çevirdikten sonra kelimenin çevirisinin text ini alamıyorum. Yardımcı olursanız sevinirim. Teşekkürler.
Bu da kodlarım
from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import time as tm

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.Firefox()

url = "https://translate.google.com/?hl=tr#view=home&op=translate&sl=tr&tl=en"

driver.get(url)

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":

     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_xpath("//*[@id='source']")

        yaziYazma.send_keys(askWhat)

SORUN YAŞADIĞIM YER

        sonuc = driver.find_element_by_css_selector(".tlid-translation translation 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()

xpath , css selector falan denedim ama olmadı

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:

1 Beğeni