2011-05-20 117 views
5

El html se ve algo como esto:¿Cómo extraer el texto dentro de una etiqueta HTML (en Selenium IDE)?

<p> 
    sometext1 
    <br> 
    sometext2 
    <br> 
    sometext3 
</p> 

me gustaría extraer todo el texto entre las etiquetas de párrafo, incluidos los <br> etiquetas.

He intentado utilizar la función storeText, pero solo almacena el texto, sin las etiquetas. Podría almacenar toda la fuente HTML y luego extraer lo que necesito en Perl, pero me preguntaba si hay una forma de almacenar un bloque de código HTML usando un xpath específico (por ejemplo, almacenar el código HTML para la tercera tabla en la página web dentro de una variable).

Respuesta

3

puede usar un getEval() con Javascript que devuelve el innerHTML del elemento. Vas a tener que encontrarlo en javascript, aunque

+0

Gracias, eso funcionó. Voy a publicar una respuesta más detallada más tarde. – Alex

+0

También podría considerar marcar esta respuesta como Correcta, si le funcionó – Tarun

1

@Tarun: Yo lo haría si pudiera el hombre ....

@Grooveek: Gracias hombre, que trabajaba. utilicé:

storeEval | window.document.getElementsByTagName("p").item(9).innerHTML | p 

Esto guarda el contenido de la novena PÁRRAFO en la variable p. Tuve que usar getElementsByTagName porque las etiquetas no tenían identificadores.

Para mayor precisión, se podría utilizar la función getElementById insted:

storeEval | window.document.getElementById("id of element").innerHTML | p 

Esperamos que ayude a otras personas también. Gracias de nuevo. .

4

innerHtml

voy a tratar con document.getElementById ('id') innerHtml

1

que sugiere esto:

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("url") 
element = driver.find_element_by_tag_name("p") 
text = element.text 

Pero hay que tener en cuenta si se trata de cuadros de texto , no puede usar .text; devuelve None. En ese caso, debe usar .get_attribute("value"), y cuando alguna vez no pueda encontrar lo que desea, puede usar .get_attribute("innerHTML").

0

getAttribute ("innerHTML"); funciona para mí

0

Propongo buscarlo por un nombre de clase, no todos los objetos tienen su Id.

storeEval | window.document.getElementsByClassName('*classname*')[0].innerHTML; | HTMLContent 

número 0 devolverá la primera ocurrencia. Si hay más de un elemento, elija el número apropiado, u obtenga el número de ocudes de clase por .length

storeEval | window.document.getElementsByClassName('*classname*').length; | ClassCount 
Cuestiones relacionadas