Estoy tratando de obtener el contenido de un textarea en un formulario HTML usando webdriver in Python.¿Cómo obtengo los contenidos de texto de un área de texto con webdriver?
Recibo el mensaje de texto, pero faltan nuevas líneas. El selenium docs son bastante inútiles; dicen:
selenium.webdriver.remote.webelement.WebElement clase (padre, ID_) texto
[...]
: Obtiene el texto del elemento.
actualmente estoy haciendo lo siguiente:
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))
Esto imprime la representación de una cadena Unicode de Python de los contenidos del área de texto, con excepción de todas las nuevas líneas han sido reemplazados por espacios. Doh!
No estoy seguro de si estoy frente a un problema de codificación de texto, error de selenium/webdriver (no pude encontrarlo en el rastreador) o error del usuario.
¿Hay alguna otra manera de hacerlo?
EDIT: Acabo de probar Chrome ... funciona bien. Informé un bug al rastreador de problemas del selenio. La solución de Sam (la respuesta aceptada a continuación) funciona en Firefox con una advertencia: los símbolos se convierten en códigos de entidad HTML en la cadena devuelta. Esto es no big deal.
Gran sugerencia. Esto funciona casi a la perfección. El único problema es que los símbolos se traducen a sus códigos de entidad HTML en la cadena resultante. es decir '' 'se convierte en' < ', y así sucesivamente. Lancé algunos hechizos de Python de bajo nivel y mitigé ese problema. –
Como referencia, el código de Python equivalente es 'text = my_web_driver.execute_script (" return arguments [0] .innerHTML ", textarea_element)'. –
En Python, 'xml.sax.saxutils.unescape (text)' un-escapes de las entidades '&', '<' and '>'. –