Я намагаюся перевірити складний інтерфейс javascript із Selenium (за допомогою інтерфейсу Python та для багатьох браузерів). У мене є кілька кнопок форми:
<div>My Button</div>
Мені хочеться шукати кнопки на основі "Моєї кнопки" (або нечутливих до регістру, часткових збігів, таких як "моя кнопка" або "кнопка")
Мені це здається дивовижно важким, настільки, наскільки я відчуваю, що пропускаю щось очевидне. Найкраще, що у мене є:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
Однак це враховує регістри. Інше, що я спробував - це повторити всі діви на сторінці та перевірити властивість element.text. Однак кожен раз, коли ви отримуєте ситуацію з формою:
<div class="outer"><div class="inner">My Button</div></div>
div.outer також містить "Мою кнопку" як текст. Щоб виправити ТО, я намагався перевірити, чи є div.outer батьком div.inner, але не міг зрозуміти, як це зробити (element.get_element_by_xpath ('..') повертає батьківський елемент елемента, але це тести, не рівні div.outer). Крім того, перегляд всіх елементів на сторінці здається дуже повільним, принаймні за допомогою веб-диска Chrome.
Ідеї?
Редагувати: Це питання вийшло трохи розпливчастим. На запитання (і відповідь) більш конкретна версія тут: Як отримати текст елемента в Selenium WebDriver (через apt Python), не включаючи дочірнього елемента елемента?