Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send entire text into a text area using selenium in python instead of sending it line by line?

My code inputs text into the text area of the web page , line by line, how to make it insert the entire text all at once instead, is there a solution for this? because line by line takes a lot of time

def Translated_Content(content):

    driver= webdriver.Chrome("C:\\Users\\shricharan.arumugam\\Desktop\\PDF2txt\\chromedriver.exe")
    driver.get('https://translate.shell.com/')

    input_box = driver.find_element_by_id('translateText')
    input_box.send_keys(content)

    translate_button = driver.find_element_by_id('translate')
    translate_button.click()
    translated_text_element= driver.find_element_by_id('translatedText')
    time.sleep(4)


    translated_text=translated_text_element.get_attribute('value')

    driver.close()

    return translated_text
like image 340
Shricharan Arumugam Avatar asked Jan 27 '26 19:01

Shricharan Arumugam


2 Answers

You can change the text of textbox/textarea through JavaScript DOM API in silent way, not from front UI:

long_string= <the long string>
input_box = driver.find_element_by_id('translateText')
driver.execute_script('arguments[0].value=arguments[1]', input_box, long_string)
like image 85
yong Avatar answered Jan 30 '26 10:01

yong


To send the entire chunk of text into the <textarea> using selenium through Python to speed up the process you can inject a script and use the following solution:

  • Code Block:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    myText = """No, there is no way to hide the console window of the chromedriver.exe 
        in the .NET bindings without modifying the bindings source code. This is seen 
        as a feature of the bindings, as it makes it very easy to see when your code 
        hasn't correctly cleaned up the resources of the ChromeDriver, since the console window 
        remains open. In the case of some other languages, if your code does not properly clean up 
        the instance of ChromeDriver by calling the quit() method on the WebDriver object, 
        you can end up with a zombie chromedriver.exe process running on your machine.""" 
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument('disable-infobars')
    driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get('https://translate.shell.com/')
    translate_from = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "textarea.form-control#translateText")))
    translate_from._parent.execute_script("""
        var elm = arguments[0], text = arguments[1];
        if (!('value' in elm))
          throw new Error('Expected an <input> or <textarea>');
        elm.focus();
        elm.value = text;
        elm.dispatchEvent(new Event('change'));
        """, translate_from, myText)
    driver.find_element_by_css_selector("input#translate").click()
    

Browser Snapshot:

ChunkOfText

like image 22
undetected Selenium Avatar answered Jan 30 '26 08:01

undetected Selenium



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!