1
resposta

[Dúvida] Erro: no such element: Unable to locate element ao tentar localizar o XPATH do elemento na página

Estou tentando fazer uma automatização com o Selenium para a minha empresa. No código, estou tentando guardar o endereço de um elemento de página, pelo xpath(tentei usar o css selector, porém deu o mesmo erro), em uma variável. Porém, ao rodar o código, ele me retorna um erro: no such element: Unable to locate element. Pesquisando um pouco, vi que pode ser que o DOM da página não tenha carregado, então adicionei um time.sleep para a página carregar... não funcionou :/ . Consegui achar um elemento que o Selenium reconhecesse, porém ele tinha a mesma sintaxe de outro elemento na página.

Linha de código com o erro:

add_novo_conteudo = navegador.find_element(By.XPATH, '//textarea[@aria-label="Adicione um novo conteúdo de texto e clique em \'Incorporar Conteúdo\'"]')

Nessa imagem eu abri na ferramenta de inspecionar do Chrome, ela me diz que só existe 1 de 1 com esse tipo de sintaxe, mas ao rodar o código, o programa seleciona o elemento que eu não quero... Insira aqui a descrição dessa imagem para ajudar na acessibilidadePergunta: Será que existe uma maneira de dizer ao selenium que eu desejo interagir com o primeiro elemento que usa essa sintaxe? (me ajudem, por favor!! kk)

1 resposta

Olá André! Tudo bem?

Pelo que entendi, você está enfrentando um problema ao tentar localizar um elemento na página usando o XPath no Selenium. O erro "no such element: Unable to locate element" geralmente ocorre quando o Selenium não consegue encontrar o elemento especificado na página.

Uma possível solução para o seu problema é usar a função find_elements em vez de find_element. A diferença é que find_elements retorna uma lista de todos os elementos que correspondem ao XPath especificado, enquanto find_element retorna apenas o primeiro elemento encontrado. Dessa forma, você pode acessar o primeiro elemento da lista usando o índice [0].

Aqui está um exemplo de como você pode modificar seu código:

elementos = navegador.find_elements(By.XPATH, '//textarea[@aria-label="Adicione um novo conteúdo de texto e clique em \'Incorporar Conteúdo\'"]')
add_novo_conteudo = elementos[0]

Dessa forma, você estará interagindo com o primeiro elemento que corresponde ao XPath especificado.

Espero que isso resolva o seu problema! Se tiver mais alguma dúvida, é só me dizer. Espero ter ajudado e bons estudos!