Estoy tratando de probar una interfaz javascript complicada con Selenium (utilizando la interfaz de Python, y en varios navegadores). Tengo una serie de botones de la forma:¿Cómo puedo encontrar un elemento que contenga texto específico en Selenium Webdriver (Python)?
<div>My Button</div>
Me gustaría ser capaz de buscar los botones basados en "Mi botón" (o no entre mayúsculas y minúsculas, las búsquedas parciales tales como "mi botón" o "botón")
Me resulta increíblemente difícil, en la medida en que siento que me falta algo obvio. Lo mejor que tengo hasta ahora es:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
Sin embargo, distingue entre mayúsculas y minúsculas. La otra cosa que he intentado es iterar a través de todos los divs en la página y verificar la propiedad de element.text. Sin embargo, cada vez que reciba una situación de la forma:
<div class="outer"><div class="inner">My Button</div></div>
div.outer también tiene "Mi botón" según el texto. Para arreglar ESO, he intentado ver si div.outer es el padre de div.inner, pero no pude encontrar la manera de hacerlo (element.get_element_by_xpath ('..') devuelve el elemento primario de un elemento, pero pruebas no iguales a div.outer). Además, iterar a través de todos los elementos en la página parece ser muy lento, al menos usando el controlador de Chrome.
Ideas?
Editar: Esta pregunta salió un poco vaga. Pedirá (y contestados) una versión más específica aquí: How to get text of an element in Selenium WebDriver (via the Python api) without including child element text?
Las respuestas actuales no funcionan para mí. Éste lo hizo: http://sqa.stackexchange.com/a/2486 – alejandro