Estoy tratando de probar una interfaz javascript complicada con Selenium (usando la interfaz Python y en varios navegadores). Tengo varios botones de la forma:
<div>My Button</div>
Me gustaría poder buscar botones basados en "Mi botón" (o coincidencias parciales que no distinguen entre mayúsculas y minúsculas, como "mi botón" o "botón")
Me parece 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, esto 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 element.text. Sin embargo, cada vez que tenga una situación de la forma:
<div class="outer"><div class="inner">My Button</div></div>
div.outer también tiene "Mi botón" como texto. Para solucionar ESO, intenté ver si div.outer es el padre de div.inner, pero no pude averiguar cómo hacerlo (element.get_element_by_xpath ('..') devuelve el elemento primario de un elemento, pero pruebas no iguales a div.outer). Además, la iteración a través de todos los elementos de la página parece ser muy lenta, al menos con el controlador web de Chrome.
Ideas?
Editar: Esta pregunta salió un poco vaga. Se le preguntó (y respondió) una versión más específica aquí: ¿Cómo obtener el texto de un elemento en Selenium WebDriver (a través de la API Python) sin incluir el texto del elemento hijo?