Problemas de cliques

Erro "O elemento não é clicável"

O clique do ChromeDriver funciona simulando um clique do mouse no meio do primeiro retângulo cliente do elemento (ou retângulo do cliente delimitador, se ele não tiver um primeiro retângulo do cliente). A maneira mais fácil de descobrir onde o ChromeDriver está tentando clicar é abrir o Chrome DevTools e inspecionar o elemento a ser clicado logo antes que a operação de clique seja chamada. Selecione o elemento no inspetor e observe as caixas azuis que representam os retângulos do cliente do elemento, conforme mostrado abaixo. O ChromeDriver tentará clicar no meio do primeiro.

Se o ChromeDriver estiver exibindo o erro "O elemento não é clicável", é provável que o local não seja realmente clicável pelo usuário. Para testar, posicione o cursor no meio do primeiro retângulo do cliente e veja se esse local é clicável.

No caso acima, o teste tentou clicar no elemento âncora. Nesse caso, a âncora não é clicável, somente a imagem filha é. Devido a um estilo margin-bottom no elemento de imagem, o meio do elemento de âncora fica fora dos limites de imagem clicável e, portanto, o ChromeDriver gera um erro. Para mais informações sobre como o posicionamento ou o dimensionamento é determinado, consulte a especificação W3. Para corrigir o caso acima, clique na imagem em vez da âncora.

O erro "O elemento não é clicável" geralmente ocorre nas seguintes situações quando um teste tenta:

  • Clique em uma âncora cujos elementos descendentes clicáveis não estejam dentro dos limites da âncora (como acima).
  • Clicar total ou parcialmente em um elemento abaixo de outro
  • Clique em um elemento fora da tela quando uma sobreposição fixa estiver presente (o elemento será rolado para a visualização, mas poderá ser rolado abaixo da sobreposição fixa)
  • Clicar em um elemento não clicável no meio (por exemplo, alguns tipos de elementos SVG convexos)

Com frequência, esses problemas podem ser resolvidos clicando em um filho do elemento em questão, removendo ou ocultando o elemento de bloqueio programaticamente, usando a API de interações avançadas para clicar em um deslocamento da parte superior esquerda do elemento ou simulando um evento de clique do mouse no JavaScript.

Erro "O elemento não é clicável"

Isso provavelmente ocorre porque a localização do elemento mudou algum tempo depois que o ChromeDriver determinou a localização do elemento, mas antes de o ChromeDriver emitir um clique no local.

Para determinar se esse é seu problema, capture a exceção do clique e registre imediatamente a localização atual e o tamanho do elemento. Compare isso com o local informado pelo ChromeDriver que tentou clicar na exceção e veja se eles são diferentes. Nesse caso, aguarde até que o elemento pare de se mover ou tente clicar de novo. Caso contrário, registre um bug com uma pequena página de teste que possa ser usada para reproduzir o problema, mesmo que ele acione o problema apenas de vez em quando.

O ChromeDriver não consegue clicar em um elemento em movimento

Esse não é um recurso compatível do ChromeDriver. Se o elemento for interrompido, aguarde até que isso ocorra. Se o elemento nunca parar de se mover, o ChromeDriver não garante que o clique será realizado.