Maison >Java >javaDidacticiel >Comment résoudre l'exception ElementNotInteractableException de Selenium lors de l'automatisation de la connexion Gmail ?

Comment résoudre l'exception ElementNotInteractableException de Selenium lors de l'automatisation de la connexion Gmail ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-26 14:28:13805parcourir

How to Resolve Selenium's

Exception relative aux éléments Selenium WebDriver : résolution de « ElementNotInteractableException » pour l'automatisation de la connexion Gmail

Lors de la tentative d'automatisation de la connexion Gmail à l'aide de Selenium WebDriver, les utilisateurs peut rencontrer le "ElementNotInteractableException."

Qu'est-ce que ElementNotInteractableException ?

Cette exception indique qu'un élément, bien que présent dans le DOM, n'est pas dans un état où il peut avec lequel interagir.

Causes et solutions pour ElementNotInteractableException

Les causes de cette exception peuvent varier. Voici quelques raisons et solutions courantes :

  • Superposition temporaire : Un autre élément peut temporairement chevaucher l'élément cible. Utilisez une attente « ExpectedConditions.invisibilityOfElementLocated » ou « ExpectedConditions.elementToBeClickable » pour résoudre ce problème.
  • Superposition permanente : Une superposition permanente nécessite l'utilisation de JavascriptExecutor pour effectuer une action de clic, comme le montre l'exemple. code ci-dessous.

Solution spécifique pour l'automatisation de la connexion Gmail

Dans le contexte de l'automatisation de la connexion Gmail à l'aide de Firefox, l'exception "ElementNotInteractableException" peut être résolue en ajoutant une attente explicite à l'aide de WebDriverWait. Le code mis à jour suivant illustre ceci :

System.setProperty("webdriver.gecko.driver", "C:UsersRuchiworkspace2SeleniumTestjargeckodriver-v0.17.0-win64geckodriver.exe");<br>WebDriver driver = nouveau FirefoxDriver();<br>driver.manage().window().maximize();<br>String url = "https://accounts.google.com/signin";<br>driver.get(url) ;<br>driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); <br>WebElement email_phone = driver.findElement(By.xpath("//input[@id='identifierId']"));<br>email_phone.sendKeys("[email protected]");<br>pilote. findElement(By.id("identifierNext")).click();<br>Mot de passe WebElement = driver.findElement(By.xpath("//input[@name='password']"));<br>WebDriverWait wait = new WebDriverWait(driver, 20);<br>wait.until(ExpectedConditions.elementToBeClickable(password));<br>password.sendKeys("test1");<br>driver.findElement(By.id("passwordNext")).click() ;<br>

En incorporant une attente explicite, le WebDriver attend que le champ "Mot de passe" soit rendu et cliquable avant d'interagir avec lui, résolvant "ElementNotInteractableException" et permettant une automatisation de connexion réussie.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn