Jak znaleźć element zawierający konkretny tekst w Selenium Webdriver (Python)?

Próbuję przetestować skomplikowany interfejs javascript za pomocą Selenium (używając interfejsu Pythona i wielu przeglądarek). Mam kilka przycisków formularza:

<div>My Button</div>

Chciałbym móc wyszukiwać przyciski na podstawie „Mój przycisk” (lub nie uwzględniające wielkości liter, częściowe dopasowania, takie jak „mój przycisk” lub „przycisk”)

Uważam to za zdumiewająco trudne, do tego stopnia, że ​​czuję, że tęsknię za czymś oczywistym. Najlepszą rzeczą jaką mam do tej pory jest:

driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')

Jednak wielkość liter ma znaczenie. Inną rzeczą, którą próbowałem, jest iterowanie przez wszystkie div na stronie i sprawdzanie właściwości element.text. Jednak za każdym razem, gdy pojawia się sytuacja w postaci:

<div class="outer"><div class="inner">My Button</div></div>

div.outer ma także „My Button” jako tekst. Aby naprawić THAT, próbowałem sprawdzić, czy div.outer jest rodzicem div.inner, ale nie mógł dowiedzieć się, jak to zrobić (element.get_element_by_xpath ('..') zwraca element nadrzędny elementu, ale to testy nie są równe div.outer). Ponadto przeglądanie wszystkich elementów na stronie wydaje się być bardzo powolne, przynajmniej przy użyciu webdrivera Chrome.

Pomysły?

Edytuj: To pytanie było trochę niejasne. Zapytany (i odpowiedział) bardziej szczegółowa wersja tutaj:Jak uzyskać tekst elementu w Selenium WebDriver (przez Python api) bez uwzględnienia tekstu elementu potomnego?

questionAnswers(8)

yourAnswerToTheQuestion