Maison >Java >javaDidacticiel >Pourquoi est-ce que je reçois une exception ElementNotInteractableException dans Selenium et comment puis-je la corriger ?
Lorsque vous rencontrez l'erreur ElementNotInteractableException lors de l'utilisation de Selenium Webdriver, il indique qu'un élément est présent sur le DOM HTML mais est dans un état qui empêche interaction. Voici un guide étape par étape pour résoudre ce problème :
ElementNotInteractableException, une exception du W3C, se produit lorsqu'un élément n'est pas accessible pour l'interaction. en raison d'une gêne dans son accessibilité ou sa visibilité. Cela peut être attribué à diverses raisons, que nous explorerons et aborderons dans les solutions suivantes.
Identification et suppression des superpositions temporaires :
Dans les cas lorsqu'un autre WebElement recouvre temporairement l'élément cible, vous pouvez utiliser ExplicitWait (WebDriverWait) en conjonction avec l'invisibilityOfElementLocated de ExpectedCondition. Cela mettra l'exécution en pause jusqu'à ce que l'élément obstruant devienne invisible. Cependant, une approche plus précise consiste à utiliser elementToBeClickable, en garantissant que l'élément cible est dans un état cliquable avant de tenter d'interagir avec lui.
Voici des exemples de code pour les deux solutions :
WebDriverWait wait2 = new WebDriverWait(driver, 10); wait2.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("xpath_of_element_to_be_invisible"))); driver.findElement(By.xpath("xpath_element_to_be_clicked")).click();
WebDriverWait wait1 = new WebDriverWait(driver, 10); WebElement element1 = wait1.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_of_element_to_be_clicked"))); element1.click();
Résoudre les superpositions permanentes :
Si le la superposition bloquant l'élément cible est permanente, vous pouvez utiliser l'interface JavascriptExecutor. Cela vous permet d'exécuter du code JavaScript dans le navigateur, notamment en cliquant sur l'élément souhaité.
WebElement ele = driver.findElement(By.xpath("element_xpath")); JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("arguments[0].click();", ele);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!