Próbuję przetestować skomplikowany interfejs javascript z Selenium (przy użyciu interfejsu Python i wielu przeglądarek). Mam kilka przycisków formularza:
<div>My Button</div>
Chciałbym móc wyszukiwać przyciski na podstawie „Mojego przycisku” (lub nie uwzględniających wielkości liter, częściowych dopasowań, takich jak „mój przycisk” lub „przycisk”)
Uważam to za niezwykle trudne do tego stopnia, że wydaje mi się, że brakuje mi czegoś oczywistego. Najlepsze, co do tej pory mam, to:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
Uwzględnia to jednak wielkość liter. Inną rzeczą, której próbowałem, jest iterowanie przez wszystkie elementy div na stronie i sprawdzanie właściwości element.text. Jednak za każdym razem, gdy pojawia się sytuacja w formularzu:
<div class="outer"><div class="inner">My Button</div></div>
div.outer ma również „My Button” jako tekst. Aby to naprawić, próbowałem sprawdzić, czy div.outer jest rodzicem div.inner, ale nie mogłem dowiedzieć się, jak to zrobić (element.get_element_by_xpath ('..') zwraca element nadrzędny elementu, ale testy nie są równe div.outer). Również iteracja po wszystkich elementach strony wydaje się być bardzo powolna, przynajmniej przy użyciu webdrivera Chrome.
Pomysły?
Edycja: To pytanie było trochę niejasne. Zapytano (i odpowiedział) o bardziej szczegółową wersję tutaj: Jak uzyskać tekst elementu w Selenium WebDriver (za pośrednictwem interfejsu API Python) bez dołączania tekstu elementu potomnego?