Sto cercando di ottenere il contenuto di uno textarea in un modulo HTML utilizzando webdriver in Python.Come posso ottenere il contenuto del testo di un'area di testo con webdriver?
Ricevo il testo, ma mancano le nuove righe. I numeri selenium docs sono praticamente inutili; dicono:
classe selenium.webdriver.remote.webelement.WebElement (genitore, ID_)
[...]
testo: Ottiene il testo dell'elemento.
Attualmente sto facendo il seguente:
from selenium import webdriver
# open the browser and web site
b = webdriver.Firefox()
b.get('http://www.example.com')
# get the textarea element
textbox = b.find_element_by_name('textbox')
# print the contents of the textarea
print(repr(textbox.text))
Questo stampa la rappresentazione di una stringa Python unicode dei contenuti del textarea, tranne che tutti i ritorni a capo sono stati sostituiti da spazi. Doh!
Non sono sicuro se sono di fronte a un problema di codifica del testo, selenio/bug del webdriver (impossibile trovarlo nel tracker) o errore dell'utente.
C'è un altro modo per farlo?
EDIT: ho appena provato Chrome ... funziona bene. Ho segnalato uno bug al tracker dei problemi del selenio. La soluzione alternativa di Sam (la risposta accettata sotto) funziona in Firefox con un avvertimento: i simboli vengono convertiti in codici di entità HTML nella stringa restituita. Questo è no big deal.
Grande suggerimento. Funziona quasi perfettamente. L'unico problema è che i simboli vengono tradotti nei loro codici di entità HTML nella stringa risultante. cioè '<' diventa '<', e così via. Ho lanciato alcuni incantesimi Python di basso livello e mitigato quel problema. –
Per riferimento, il codice Python equivalente è 'text = my_web_driver.execute_script (" return argomenti [0] .innerHTML ", textarea_element)'. –
In Python, 'xml.sax.saxutils.unescape (text)' cancella le entità '&', '<' and '>'. –