Como Encontrar Elemento por Texto com Selênio

How Find Element Text With Selenium



Localizar e selecionar elementos da página da web é a chave para a web scraping com Selenium. Você pode selecionar elementos usando um nome de tag, ID, nome de classe, seletor XPath, seletor CSS, etc. no Selenium. Você também pode selecionar elementos que possuem um texto específico com Selenium. Isso é útil para selecionar links e botões da página da web facilmente. Mesmo se a estrutura da página mudar, contanto que o texto do elemento da página da web permaneça o mesmo, seu seletor deve funcionar bem. Esta é a vantagem de selecionar links e botões usando texto no Selenium.

Neste artigo, vou mostrar como localizar e selecionar elementos de páginas da web usando texto no Selenium com a biblioteca python Selenium. Então vamos começar.







Pré-requisitos:

Para experimentar os comandos e exemplos deste artigo, você deve ter:



  1. Uma distribuição Linux (de preferência Ubuntu) instalada no seu computador.
  2. Python 3 instalado em seu computador.
  3. PIP 3 instalado no seu computador.
  4. Pitão virtualenv pacote instalado em seu computador.
  5. Navegadores Mozilla Firefox ou Google Chrome instalados em seu computador.
  6. Deve saber como instalar o Firefox Gecko Driver ou Chrome Web Driver.

Para cumprir os requisitos 4, 5 e 6, leia meu artigo Introdução ao Selenium em Python 3 .



Você pode encontrar muitos artigos sobre outros tópicos em LinuxHint.com . Certifique-se de verificá-los se precisar de alguma ajuda.





Configurando um diretório de projeto:

Para manter tudo organizado, crie um novo diretório de projeto selenium-text-select / do seguinte modo:

$mkdir -pvselenium-text-select/motoristas



Navegue até o selenium-text-select / diretório do projeto da seguinte forma:

$CDselenium-text-select/

Crie um ambiente virtual Python no diretório do projeto da seguinte maneira:

$virtualenv .venv

Ative o ambiente virtual da seguinte maneira:

$fonte.venv/sou/ativar

Instale a biblioteca Selenium Python usando PIP3 da seguinte maneira:

$ pip3 install selenium

Baixe e instale todos os drivers da web necessários no motoristas / diretório do projeto. Eu expliquei o processo de download e instalação de drivers da web em meu artigo Introdução ao Selenium em Python 3 .

Localização de elementos por texto:

Nesta seção, vou mostrar alguns exemplos de localização e seleção de elementos de página da web por texto com a biblioteca Selenium Python.

Vou começar com o exemplo mais simples de seleção de elementos de uma página da web por texto, selecionando links da página da web.

Na página de login do facebook.com, temos um link Esqueceu a conta? Como você pode ver na imagem abaixo. Vamos selecionar este link com Selenium.

Crie um novo script Python ex01.py e digite as seguintes linhas de códigos nele.

a partir deselênioimportardriver da web
a partir deselênio.driver da web.comum.chaves importarChaves
a partir deselênio.driver da web.comum.por importarPor
a partir de Tempo importardormir
navegador=webdriver.cromada(executable_path='./drivers/chromedriver')
navegador.pegue('https://www.facebook.com/')
ForgotAccountLink=navegador.find_element(Por.XPATH, '
// * [text () = 'Esqueceu a conta?'] '
)
ForgotAccountLink.send_keys(Chaves.DIGITAR)

Quando terminar, salve o ex01.py Script Python.

A linha 1-4 importa todos os componentes necessários para o programa Python.

Linha 6 cria um Chrome navegador objeto usando o cromedriver binário do motoristas / diretório do projeto.

A linha 8 diz ao navegador para carregar o site facebook.com.

A linha 10 encontra o link que contém o texto Esqueceu a conta? Usando o seletor XPath. Para isso, usei o seletor XPath // * [text () = ’Conta esquecida?’] .

O seletor XPath começa com //, o que significa que o elemento pode estar em qualquer lugar da página. o * símbolo diz ao Selenium para selecionar qualquer tag ( para ou p ou período, etc.) que corresponde à condição entre colchetes [] . Aqui, a condição é, o texto do elemento é igual ao Esqueceu a conta?

o texto() A função XPath é usada para obter o texto de um elemento.

Por exemplo, texto() retorna Olá Mundo se selecionar o seguinte elemento HTML.

< para href='http://dummysite.com'>Olá Mundo</ para >

A linha 11 envia o pressione a tecla para o Esqueceu a conta? Ligação.

Execute o script Python ex01.py com o seguinte comando:

$ python ex01.py

Como você pode ver, o navegador da web encontra, seleciona e pressiona o chave no Esqueceu a conta? Ligação.

o Esqueceu a conta? O link leva o navegador para a página seguinte.

Da mesma forma, você pode pesquisar facilmente os elementos que possuem o valor de atributo desejado.

Aqui o Conecte-se botão é um entrada elemento que tem o valor atributo Conecte-se . Vamos ver como selecionar este elemento por texto.

Crie um novo script Python ex02.py e digite as seguintes linhas de códigos nele.

a partir deselênioimportardriver da web
a partir deselênio.driver da web.comum.chaves importarChaves
a partir deselênio.driver da web.comum.por importarPor
a partir de Tempo importardormir
navegador=webdriver.cromada(executable_path='./drivers/chromedriver')
navegador.pegue('https://www.facebook.com/')
dormir(5)
emailInput=navegador.find_element(Por.XPATH, '// input [@ id =' email ']')
passwordInput=navegador.find_element(Por.XPATH, '// input [@ id =' pass ']')
loginButton=navegador.find_element(Por.XPATH, '// * [@ value =' Login ']')
emailInput.send_keys('[email protegido]')
dormir(5)
passwordInput.send_keys('passe secreto')
dormir(5)
loginButton.send_keys(Chaves.DIGITAR)

Quando terminar, salve o ex02.py Script Python.

A linha 1-4 importa todos os componentes necessários.

Linha 6 cria um Chrome navegador objeto usando o cromedriver binário do motoristas / diretório do projeto.

A linha 8 diz ao navegador para carregar o site facebook.com.

Tudo acontece muito rápido depois de executar o script. Então, eu usei o dormir() funcionar muitas vezes em ex02.py para atrasar comandos do navegador. Dessa forma, você pode observar como tudo funciona.

A linha 11 encontra a caixa de texto de entrada de e-mail e armazena uma referência do elemento no emailInput variável.

A linha 12 encontra a caixa de texto de entrada de e-mail e armazena uma referência do elemento no emailInput variável.

A linha 13 encontra o elemento de entrada que possui o atributo valor do Conecte-se usando o seletor XPath. Para isso, usei o seletor XPath // * [@ value = ’Log In’] .

O seletor XPath começa com // . Isso significa que o elemento pode estar em qualquer lugar da página. o * símbolo diz ao Selenium para selecionar qualquer tag ( entrada ou p ou período, etc.) que corresponde à condição entre colchetes [] . Aqui, a condição é o atributo do elemento valor é igual a Conecte-se .

A linha 15 envia a entrada[email protegido]à caixa de texto de entrada de e-mail e a linha 16 atrasa a próxima operação.

A linha 18 envia a senha secreta de entrada para a caixa de texto de entrada de senha e a linha 19 atrasa a próxima operação.

Linha 21 envia o pressione a tecla para o botão de login.

Execute o ex02.py Script Python com o seguinte comando:

$ python3 ex02.py

Como você pode ver, as caixas de texto de e-mail e senha são preenchidas com nossos valores fictícios, e o Conecte-se botão é pressionado.

Em seguida, a página navega para a página seguinte.

Encontrando Elementos por Texto Parcial:

Na seção anterior, mostrei como localizar elementos por texto específico. Nesta seção, vou mostrar como encontrar elementos de páginas da web usando texto parcial.

No exemplo, ex01.py , Eu pesquisei o elemento de link que contém o texto Esqueceu a conta? . Você pode pesquisar o mesmo elemento de link usando texto parcial, como Esquecido acc . Para fazer isso, você pode usar o contém () Função XPath, conforme mostrado na linha 10 de ex03.py . O resto dos códigos são os mesmos que em ex01.py . Os resultados serão os mesmos.

Na linha 10 de ex03.py , a condição de seleção usou o contém (fonte, texto) Função XPath. Esta função leva 2 argumentos, fonte, e texto .

o contém () função verifica se o texto dado no segundo argumento corresponde parcialmente ao fonte valor no primeiro argumento.

A fonte pode ser o texto do elemento ( texto() ) ou o valor do atributo do elemento ( @attr_name )

No ex03.py , o texto do elemento é verificado.

Outra função XPath útil para encontrar elementos da página da web usando texto parcial é começa com (fonte, texto) . Esta função tem os mesmos argumentos que o contém () função e é usado da mesma maneira. A única diferença é que o começa com() função verifica se o segundo argumento texto é a string inicial do primeiro argumento fonte .

Eu reescrevi o exemplo ex03.py para procurar o elemento para o qual o texto começa com Esquecido, como você pode ver na linha 10 de ex04.py . O resultado é o mesmo que em ex02 e ex03.py .

Eu também reescrevi ex02.py para que ele procure o elemento de entrada para o qual o valor atributo começa com Registro, como você pode ver na linha 13 de ex05.py . O resultado é o mesmo que em ex02.py .

Conclusão:

Neste artigo, mostrei como encontrar e selecionar elementos de páginas da web por texto com a biblioteca Selenium Python. Agora, você deve ser capaz de encontrar elementos de páginas da web por texto específico ou texto parcial com a biblioteca Selenium Python.