1

Ich bekomme von meinem webdriverIO Selen Code den folgenden Fehler, wenn ich versuche, es zu laufen:WebdriverIO browser.click gibt Fehler "Anderes Element würde den Klick erhalten". Wie repariere ich?

Failed: unknown error: Element is not clickable at point (389, 709). Other element would receive the click: < html lang="en" >...< /html >

hier ist der entsprechende Code:

const checkboxSelector = 
    getAttributeSelector('data-test', 'manual-checkbox'); 
browser.click(checkboxSelector); 

Wie kann ich diesen Fehler beheben?

--- ZUSÄTZLICHE INFORMATIONEN ---

Der Test mit chromedriver betrieben wird:

var desktop = exports.desktop = [{ 
    browser: 'Chrome', 
    os: 'Windows', 
    os_version: '7' 
}]; 

Antwort

1

Scheint, wie das Problem war, dass man explizit auf das entsprechende Element blättern erforderlich, um die Schaltfläche zu klicken . Nicht sicher, warum es nicht automatisch ist, aber es ist eine einfache Lösung mit browser.scroll(selector) (http://webdriver.io/api/utility/scroll.html).

const checkboxSelector = 
    getAttributeSelector('data-test', 'manual-checkbox'); 
browser.scroll(checkboxSelector); 
browser.click(checkboxSelector); 

Problem gelöst

+0

Das ist ein Hack, keine Lösung. Ich nehme an, dass Sie Ihre Tests auf Nicht-Chrome-Browsern ausführen (hatte dieses Problem mit "geckodriver" mehrmals). Können Sie Ihre Frage mit den 'package.json'-Abhängigkeiten und dem Setup, für das Sie Ihre Prüfungen ausführen, aktualisieren? Bei 'chromedriver' zum Beispiel scrollt der' .click() 'Befehl automatisch zum' element', bis es im 'viewport' sichtbar ist. – iamdanchiv

+0

Danke für einen Blick. Wie hast du dein Problem auf Geckodriver gelöst? Leider, obwohl Sie sagen, dass Chromedriver automatisch zu dem Element scrollt, das es in meinem Fall nicht tat. Ich verwende Chromedriver für meinen Test. Ich kann die package.json nicht hinzufügen, weil zu viele andere Dinge passieren, aber ich habe einige relevante Konfigurationsinformationen hinzugefügt. – ThinkBonobo

1

Ist Ihre Seite haben möglicherweise versteckte Elemente oder mehrere Elemente, die Sie mit Ihrem Wähler werden Targeting kann? Wenn ich diesen Fehler gesehen habe, könnte mein einzelner Selektor oft hinter den Kulissen auf ein anderes Element zielen. Die Meldung "Anderes Element würde den Klick erhalten" war oft der Schlüssel, um darauf hinzuweisen, dass es mehrere Elemente aufgenommen hat und das Element, auf das Sie klicken wollten, nicht das war, worauf das Skript geklickt hätte.

Sie können dies testen, indem Sie Ihre CSS-Selektor in der Browser-Konsole mit

$$('data-test') 

Verwendung Wenn Sie mehrere Elemente zurück sehen, können Sie spezifischere mit Ihrem Selector genauer zu eng auf der zu sein brauchen Sie beabsichtigen zu handeln.

+0

Das war eigentlich mein erster Gedanke @Denzik. Aber als ich auf die Seite schaute, steht nichts davor. Es war jedoch außerhalb des Ansichtsfensters, das das Klicken verhinderte. – ThinkBonobo

+0

@ThinkBonobo hast du das gelöst? Der click() mit webdriverIO sollte das Element korrekt finden und dann klicken, ohne zu diesem blättern zu müssen. Vor allem in der neueren Version von ChromeDriver und WebdriverIO, wenn Sie in letzter Zeit nicht aktualisiert haben. – Denzik

+0

Hey Denzik, die Daten Test markierten Attribute, die ich erstellt habe, sind einzigartig für ein einzelnes Element auf der Seite. Ich kann die Pakete derzeit nicht wirklich aktualisieren, da sie sich in einer gemeinsamen Konfigurationsbibliothek befinden und andere Benutzer sie möglicherweise verwenden. Es ist sehr gut möglich, dass ich, wenn ich webdriver/chromedriver aktualisiere, den scroll() Befehl nicht benötige, bevor ich auf eine Schaltfläche im Ansichtsfenster klicke, aber jetzt lasse ich es, da es nicht weh tut. – ThinkBonobo

Verwandte Themen