J'essaie de tester une interface javascript compliquée avec Selenium (en utilisant l'interface Python et sur plusieurs navigateurs). J'ai un certain nombre de boutons du formulaire:
<div>My Button</div>
J'aimerais pouvoir rechercher des boutons en fonction de "Mon bouton" (ou des correspondances partielles non sensibles à la casse telles que "mon bouton" ou "bouton")
Je trouve cela incroyablement difficile, dans la mesure où j'ai l'impression de manquer quelque chose d'évident. La meilleure chose que j'ai jusqu'à présent est:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
Ceci est cependant sensible à la casse. L'autre chose que j'ai essayée est de parcourir toutes les divs de la page et de vérifier la propriété element.text. Cependant, chaque fois que vous obtenez une situation du formulaire:
<div class="outer"><div class="inner">My Button</div></div>
div.outer a également "My Button" comme texte. Pour corriger cela, j'ai essayé de voir si div.outer est le parent de div.inner, mais je n'ai pas pu comprendre comment le faire (element.get_element_by_xpath ('..') renvoie le parent d'un élément, mais il tests différents de div.outer). De plus, parcourir tous les éléments de la page semble être très lent, du moins en utilisant le pilote Web Chrome.
Des idées?
Edit: Cette question est sortie un peu vague. A demandé (et répondu) une version plus spécifique ici: Comment obtenir le texte d'un élément dans Selenium WebDriver (via l'API Python) sans inclure le texte de l'élément enfant?