Sto provando a testare un'interfaccia javascript complicata con Selenium (utilizzando l'interfaccia Python e su più browser). Ho un numero di pulsanti del modulo:
<div>My Button</div>
Mi piacerebbe poter cercare pulsanti basati su "Il mio pulsante" (o corrispondenze parziali senza distinzione tra maiuscole e minuscole come "il mio pulsante" o "pulsante")
Lo trovo incredibilmente difficile, nella misura in cui mi sembra di perdere qualcosa di ovvio. La cosa migliore che ho finora è:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
Questo è sensibile al maiuscolo / minuscolo, tuttavia. L'altra cosa che ho provato è scorrere tutte le div sulla pagina e controllare la proprietà element.text. Tuttavia, ogni volta che si verifica una situazione del modulo:
<div class="outer"><div class="inner">My Button</div></div>
div.outer ha anche "My Button" come testo. Per risolvere il problema, ho provato a vedere se div.outer è il genitore di div.inner, ma non sono riuscito a capire come farlo (element.get_element_by_xpath ('..') restituisce il genitore di un elemento, ma esso test non uguali a div.outer). Inoltre, iterare tutti gli elementi della pagina sembra essere molto lento, almeno usando il webdriver di Chrome.
Idee?
Modifica: questa domanda è emersa un po 'vaga. Chiesto (e risposto) una versione più specifica qui: Come ottenere il testo di un elemento in Selenium WebDriver (tramite l'API Python) senza includere il testo dell'elemento figlio?