Como encontrar elemento por texto com selênio

Como encontrar elemento por texto com selênio
A localização e a seleção de elementos da página da web é a chave para raspar a web com selênio. Você pode selecionar elementos usando um nome de tag, id, nome da classe, seletor XPath, seletor de CSS, etc. em selênio. Você também pode selecionar elementos que tenham um texto específico com selênio. Isso é útil para selecionar links e botões da página da web facilmente. Mesmo que a estrutura da página mude, desde 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 o texto em Selenium.

Neste artigo, vou mostrar como localizar e selecionar elementos nas páginas da web usando o texto em Selenium com a Biblioteca Selenium Python. 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 no seu computador.
  3. Pip 3 instalado no seu computador.
  4. Pitão virtualenv Pacote instalado no seu computador.
  5. Mozilla Firefox ou Google Chrome Web navegadores instalados em seu computador.
  6. Deve saber como instalar o driver do Firefox Gecko ou o driver da Web Chrome.

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

Você pode encontrar muitos artigos sobre os outros tópicos no Linuxhint.com. Não deixe de conferir se precisar de alguma assistência.

Configurando um diretório de projeto:

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

$ mkdir -pv Selenium-text-select/drivers

Navegue até o selênio-text-select/ Diretório do projeto da seguinte forma:

$ CD Selenium-Text-Select/

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

$ virtualenv .Venv

Ative o ambiente virtual da seguinte forma:

$ fonte .venv/bin/ativar

Instale a biblioteca Selênio Python usando o PIP3 da seguinte forma:

$ PIP3 Instale o selênio

Baixar e instalar todo o driver da web necessário 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 selênio em Python 3.

Encontrar elementos por texto:

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

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

Na página de login do Facebook.com, temos um link Conta esquecida? Como você pode ver na captura de tela abaixo. Vamos selecionar este link com o Selenium.

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

do selênio importar webdriver
de selênio.WebDriver.comum.teclas de importação
de selênio.WebDriver.comum.por importação por
Desde o tempo de importação do sono
navegador = webdriver.Chrome (executável_path = "./Drivers/Chromedriver ")
navegador.Get ("https: // www.Facebook.com/")
esquecida e navegador.FIND_ELEMENT (BY.Xpath, "pós-66569-_hlk47727696">
//*[text () = 'conta esquecida?'] ")
esquecia.send_keys (chaves.DIGITAR)

Depois de terminar, salve o Ex01.py Script Python.

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

A linha 6 cria um cromo navegador objeto usando o cromedriver binário do motoristas/ Diretório do projeto.

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

A linha 10 encontra o link que tem o texto Conta esquecida? Usando o seletor XPath. Para isso, eu 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 * O símbolo diz ao selênio para selecionar qualquer tag (a ou p ou período, etc.) que corresponde à condição dentro dos suportes quadrados []. Aqui, a condição é que o texto do elemento é igual ao Conta esquecida?

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.

Olá Mundo

A linha 11 envia o tecla pressione para o Conta esquecida? Link.

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 Conta esquecida? Link.

O Conta esquecida? O link leva o navegador para a página seguinte.

Da mesma maneira, você pode procurar facilmente elementos que tenham o valor de atributo desejado.

Aqui o Conecte-se O 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.

do selênio importar webdriver
de selênio.WebDriver.comum.teclas de importação
de selênio.WebDriver.comum.por importação por
Desde o tempo de importação do sono
navegador = webdriver.Chrome (executável_path = "./Drivers/Chromedriver ")
navegador.Get ("https: // www.Facebook.com/")
sono (5)
emailInput = navegador.FIND_ELEMENT (BY.Xpath, "// input [@id = 'email']")
PasswordInput = navegador.FIND_ELEMENT (BY.Xpath, "// input [@id = 'pass']")
LoginButton = navegador.FIND_ELEMENT (BY.Xpath, "//*[@value = 'login']")
emailInput.send_keys ('dummy@e -mail.com ')
sono (5)
PasswordInput.Send_keys ('Secret-Pass')
sono (5)
LoginButton.send_keys (chaves.DIGITAR)

Depois de terminar, salve o ex02.py Script Python.

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

A linha 6 cria um cromo navegador objeto usando o cromedriver binário do motoristas/ Diretório do projeto.

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

Tudo acontece tão rápido quando você executa o script. Então, eu usei o dormir() função muitas vezes em ex02.py Para atrasar os comandos do navegador. Dessa forma, você pode observar como tudo funciona.

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

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

A linha 13 encontra o elemento de entrada que tem o atributo valor de Conecte-se usando o seletor XPath. Para isso, eu usei o seletor XPath //*[@value = 'login'].

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

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

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

A linha 21 envia o tecla pressione 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 email e senha são preenchidas com nossos valores fictícios, e o Conecte-se o botão é pressionado.

Então a página navega para a página seguinte.

Encontrar elementos por texto parcial:

Na seção anterior, mostrei como encontrar 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 procurei o elemento de link que tem o texto Conta esquecida?. 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, como mostrado na linha 10 de ex03.py. O restante dos códigos é o mesmo 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).

Em ex03.py, O texto do elemento é verificado.

Outra função XPath útil para encontrar elementos da página da web usando o 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 sequência inicial do primeiro argumento fonte.

Eu reescrevi o exemplo ex03.py Para procurar o elemento pelo 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 reescrito 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 das páginas da web por texto com a Biblioteca de Selênio Python. Agora, você deve encontrar elementos de páginas da web por texto específico ou texto parcial com a Biblioteca de Selênio Python.