Problemen met klikken

Fout 'Element is niet klikbaar'

Klikken in ChromeDriver werkt door een muisklik te simuleren in het midden van de eerste clientrect van het element (of de begrenzende clientrect als deze geen eerste clientrect heeft). De eenvoudigste manier om erachter te komen waar ChromeDriver probeert te klikken, is door Chrome devtools te openen en het element te inspecteren waarop moet worden geklikt, vlak voordat uw klikbewerking wordt aangeroepen. Selecteer het element in de inspecteur en zie de blauwe vakjes die de klantrectens van het element vertegenwoordigen, zoals hieronder afgebeeld. ChromeDriver probeert in het midden van de eerste te klikken.

Als ChromeDriver de foutmelding 'Element is niet klikbaar' genereert, komt dit hoogstwaarschijnlijk omdat de gebruiker niet daadwerkelijk op die locatie kan klikken. Om dit te testen, plaatst u uw cursor in het midden van het eerste klantrecensie en kijkt u of die locatie klikbaar is.

In het bovenstaande geval probeerde de test op het ankerelement te klikken. Het anker is in dit geval niet klikbaar; alleen de kinderafbeelding is. Vanwege een margin-bottom op het afbeeldingselement valt het midden van het ankerelement buiten de klikbare afbeeldingsgrenzen, waardoor ChromeDriver een fout genereert. Zie de W3-specificatie voor meer informatie over hoe de positionering of grootte wordt bepaald. Om het bovenstaande geval op te lossen, klikt u op de afbeelding in plaats van op het anker.

De fout 'Element is niet klikbaar' treedt vaak op in de volgende situaties wanneer een test probeert:

  • Klik op een anker waarvan de klikbare onderliggende elementen zich niet binnen de ankergrenzen bevinden (zoals hierboven)
  • Klik een element geheel of gedeeltelijk onder een ander element
  • Klik buiten het scherm op een element als er een vaste overlay aanwezig is (het element wordt in beeld gescrolld, maar het kan ook onder de vaste overlay worden gescrolld)
  • Klik op een element waarop niet in het midden kan worden geklikt (bijvoorbeeld sommige typen convexe SVG-elementen)

Deze problemen kunnen vaak worden opgelost door op een onderliggend element van het gegeven element te klikken, door het blokkerende element programmatisch te verwijderen of te verbergen, door de API voor geavanceerde interacties te gebruiken om op een afstand vanaf de linkerbovenhoek van het element te klikken, of door een muis te simuleren klik op evenement in javascript.

Fout 'Element is niet klikbaar'

Dit gebeurt hoogstwaarschijnlijk omdat de locatie van het element is gewijzigd enige tijd nadat ChromeDriver de locatie van het element heeft bepaald, maar voordat ChromeDriver daadwerkelijk op de locatie klikt.

Om te bepalen of dit uw probleem is, vangt u de uitzondering op van de klik en logt u onmiddellijk de huidige locatie en grootte van het element in. Vergelijk dat met de locatie waarvan ChromeDriver meldt dat het heeft geprobeerd in de uitzondering te klikken en kijk of deze verschillend zijn. Als dit het geval is, moet u wachten tot het element niet meer beweegt of opnieuw proberen te klikken. Als dit niet het geval is, dient u een bug in op een kleine testpagina die kan worden gebruikt om uw probleem te reproduceren (zelfs als dit slechts af en toe het probleem veroorzaakt).

ChromeDriver kan niet op een bewegend element klikken

Dit is geen ondersteunde functie van ChromeDriver. Als het element uiteindelijk stopt, wacht dan tot dat gebeurt. Als het element nooit stopt met bewegen, garandeert ChromeDriver niet dat de klik succesvol zal zijn.