如何使用python中的硒将整个文本发送到文本区域,而不是逐行发送? [英] How to send entire text into a text area using selenium in python instead of sending it line by line?

查看:80
本文介绍了如何使用python中的硒将整个文本发送到文本区域,而不是逐行发送?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码逐行将文本输入到网页的文本区域中,如何使它一次全部插入整个文本,是否有解决方案? 因为逐行需要很多时间

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

推荐答案

要使用硒通过 Python 将整个文本块发送到<textarea>中,以加快注入脚本的过程并使用以下解决方案:

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

浏览器快照:

这篇关于如何使用python中的硒将整个文本发送到文本区域,而不是逐行发送?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆