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 de cliente do elemento (ou retângulo de cliente delimitador se não tiver um primeiro retângulo de 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 antes que a operação de clique seja chamada. Selecione o elemento no inspetor e repare as caixas azuis representando os retângulos clientes do elemento, como na imagem abaixo. O ChromeDriver tentará clicar no meio do primeiro.

Se o ChromeDriver estiver gerando o erro "O elemento não é clicável", é provável que o usuário não possa clicar nesse local. Para testar, coloque o cursor no meio do primeiro retângulo do cliente e verifique se é possível clicar nesse local.

No caso acima, o teste estava tentando clicar no elemento de âncora. Nesse caso, a âncora não é clicável, apenas a imagem filha é. Por causa de um estilo margin-bottom no elemento de imagem, o meio do elemento de âncora fica fora dos limites da imagem clicável e, portanto, o ChromeDriver gera um erro. Para mais informações sobre como o posicionamento/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 nestas situações quando um teste tenta:

  • clicar 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 em outro
  • clicar em um elemento fora da tela quando uma sobreposição fixa estiver presente (o elemento será rolado para a visualização, mas pode ser rolado para baixo da sobreposição fixa);
  • clicar em um elemento não clicável no meio (por exemplo, alguns tipos de elementos SVG convexos)

Esses problemas geralmente podem ser resolvidos clicando em um filho de determinado elemento, removendo ou ocultando programaticamente o elemento de bloqueio, usando a API de interações avançadas para clicar em um deslocamento do canto superior esquerdo do elemento ou simulando um evento de clique do mouse em 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, mas antes de o ChromeDriver realmente emitir um clique no local.

Para determinar se esse é seu problema, capture a exceção do clique e registre imediatamente a localização e o tamanho atuais do elemento. Compare com o local em que o ChromeDriver informou que tentou clicar na exceção e veja se são diferentes. Nesse caso, espere o elemento parar de se mover ou tente clicar novamente. Caso contrário, registre um bug com uma pequena página de teste que pode ser usada para reproduzir o problema, mesmo que o acione o problema apenas ocasionalmente.

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

Esse não é um recurso compatível com o ChromeDriver. Se o elemento parar, aguarde até que isso ocorra. Se o elemento nunca parar de se mover, o ChromeDriver não garante que o clique será bem-sucedido.