Warum löst mein WebDriver eine ElementNotInteractableException aus?
Susan Sarandon
Freigeben: 2024-12-07 11:17:13
Original
124 Leute haben es durchsucht
ElementNotInteractableException: Element ist über die Tastatur nicht erreichbar
Verstehen des Fehlers
Dieser Fehler tritt auf, wenn WebDriver nicht interagieren kann mit einem Element über die Tastatur. Dies kann daran liegen, dass das Element ausgeblendet, verdeckt oder nicht fokussierbar ist.
Gründe für den Fehler
Element ist ausgeblendet:Entweder vorübergehend von einem anderen Element verdeckt oder dauerhaft ausgeblendet.
Permanente Überlagerung vorhanden:Ein Overlay-Element blockiert den Zugriff auf das gewünschte Element.
Attribute, die die Interaktion verhindern:Attribute wie class="ng-hide" oder style="display: none" deaktivieren die Interaktion .
Versuche, auf Elemente wie
zu klicken oder
: Klicks an senden Tags stattdessen.
Lösungen
Temporäre Überlagerung: Verwenden Sie WebDriverWait und ExpectedConditions, um zu warten, bis das Element sichtbar wird/ anklickbar.
Permanente Überlagerung: Verwenden Sie „executeScript()“ von JavascriptExecutor, um style="display: none" auf style="display: block" zurückzusetzen.
Attribute, die Interaktion verhindern: Verwenden Sie „executeScript()“ von JavascriptExecutor, um Attribute zu ändern und Interaktion ermöglichen.
Für dieses spezielle Problem (Facebook Registrierung)
Aufgrund von React Native-Elementen auf der Facebook-Anmeldeseite ist eine dynamische Locator-Strategie erforderlich:
driver.findElement(By.xpath("//input[@name='firstname' and contains(@class,'inputtext')]")).sendKeys("testing it ");
Nach dem Login kopieren
Update mit moz:webdriverClick
Firefox-Funktion moz:webdriverClick ermöglicht die Deaktivierung der WebDriver-konformen Interaktionsfähigkeit prüft:
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability("moz:webdriverClick", false);
WebDriver driver = new FirefoxDriver(dc);
Nach dem Login kopieren
Das obige ist der detaillierte Inhalt vonWarum löst mein WebDriver eine ElementNotInteractableException aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn