Ich versuche, eine komplizierte JavaScript-Schnittstelle mit Selenium zu testen (mit der Python-Schnittstelle, und über mehrere Browser). Ich habe eine Reihe von Tasten des Formulars:
<div>My Button</div>
Ich möchte nach Schaltflächen suchen können, die auf "Meine Schaltfläche" basieren (oder auf nicht großgeschriebenen Teilübereinstimmungen wie "Meine Schaltfläche" oder "Schaltfläche").
Das fällt mir so schwer, dass ich das Gefühl habe, etwas Offensichtliches zu übersehen. Das Beste, was ich bis jetzt habe, ist:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
Dabei wird jedoch zwischen Groß- und Kleinschreibung unterschieden. Die andere Sache, die ich versucht habe, ist Iteration durch alle divs auf der Seite, und die element.text-Eigenschaft überprüfen. Jedoch, jedes Mal, wenn Sie eine Situation des Formulars erhalten:
<div class="outer"><div class="inner">My Button</div></div>
div.outer hat auch "My Button" als Text. Zum Beheben dass Ich habe versucht zu sehen, ob div.outer das Elternteil von div.inner ist, aber ich konnte nicht herausfinden, wie man das macht (element.get_element_by_xpath('..') gibt das Elternteil eines Elements zurück, aber es testet nicht gleich div.outer).
Außerdem scheint die Iteration durch alle Elemente auf der Seite wirklich langsam zu sein, zumindest mit dem Chrome-Webdriver.
Ideen?
Ich habe hier eine spezifischere Version gefragt (und beantwortet): Wie erhält man den Text eines Elements in Selenium WebDriver, ohne den Text eines untergeordneten Elements einzubeziehen?