Estou tentando testar uma interface javascript complicada com o Selenium (usando a interface Python e em vários navegadores). Eu tenho vários botões do formulário:
<div>My Button</div>
Gostaria de poder procurar botões com base em "Meu botão" (ou correspondências parciais que não diferenciam maiúsculas de minúsculas, como "meu botão" ou "botão")
Estou achando isso incrivelmente difícil, na medida em que sinto que estou perdendo algo óbvio. A melhor coisa que tenho até agora é:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
Isso faz distinção entre maiúsculas e minúsculas, no entanto. A outra coisa que tentei é percorrer todas as divs da página e verificar a propriedade element.text. No entanto, toda vez que você obtém uma situação do formulário:
<div class="outer"><div class="inner">My Button</div></div>
div.outer também tem "Meu botão" como o texto. Para corrigir isso, tentei verificar se div.outer é o pai do div.inner, mas não consegui descobrir como fazer isso (element.get_element_by_xpath ('..') retorna o pai de um elemento, mas ele testes diferentes de div.outer). Além disso, a iteração de todos os elementos da página parece muito lenta, pelo menos usando o driver da web do Chrome.
Ideias?
Edit: Esta questão saiu um pouco vaga. Pediu (e respondeu) uma versão mais específica aqui: Como obter o texto de um elemento no Selenium WebDriver (via API do Python) sem incluir o texto do elemento filho?