Я пытаюсь проверить сложный интерфейс javascript с Selenium (используя интерфейс Python и через несколько браузеров). У меня есть несколько кнопок формы:
<div>My Button</div>
Я хотел бы иметь возможность искать кнопки на основе "Моя кнопка" (или не учитывающие регистр, частичные совпадения, такие как "моя кнопка" или "button")
Я нахожу это удивительно трудным, насколько мне кажется, что я пропускаю что-то очевидное. Самое лучшее, что у меня есть до сих пор:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
Это зависит от регистра. Другая вещь, которую я пробовал, - это повторение всех разделов на странице и проверка свойства element.text. Однако каждый раз, когда вы получаете ситуацию в форме:
<div class="outer"><div class="inner">My Button</div></div>
div.outer также имеет "Моя кнопка" в качестве текста. Чтобы исправить THAT, я попытался посмотреть, является ли div.outer родителем div.inner, но не мог понять, как это сделать (element.get_element_by_xpath ('..') возвращает родительский элемент, но он тесты не равны div.outer). Кроме того, повторение всех элементов на странице кажется очень медленным, по крайней мере, с помощью веб-браузера Chrome.
Идеи?
Изменить: этот вопрос вышел немного расплывчато. Спросил (и ответил) более конкретную версию здесь: Как получить текст элемента в Selenium WebDriver (через Python api) без включения текста дочернего элемента?