Maison >Java >javaDidacticiel >Pourquoi Selenium lance-t-il \'ElementNotInteractableException\' lors de l'automatisation de la connexion Gmail ?

Pourquoi Selenium lance-t-il \'ElementNotInteractableException\' lors de l'automatisation de la connexion Gmail ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-26 09:21:09406parcourir

Why Does Selenium Throw

"ElementNotInteractableException" levée par Selenium WebDriver

Lors de la tentative d'automatisation de la connexion à Gmail avec Selenium WebDriver, les utilisateurs peuvent rencontrer l'erreur "ElementNotInteractableException". Cette erreur indique que certains éléments de la page Web ne sont pas dans un état permettant une interaction.

Causes et solutions

Les causes et solutions courantes pour "ElementNotInteractableException" incluent :

  • Superposition temporaire : Si un autre élément chevauche l'élément cible, un message explicite l'attente peut être induite en utilisant "WebDriverWait" en combinaison avec ExpectedCondition comme "invisibilityOfElementLocated" ou "elementToBeClickable" pour attendre que la superposition disparaisse avant d'interagir avec l'élément.
  • Superposition permanente : Lorsque le la superposition est permanente, un cast de l'instance WebDriver vers JavascriptExecutor et l'exécution de "arguments[0].click();" peut être utilisé pour effectuer l'opération de clic.

Résoudre l'erreur dans ce contexte

Dans le code fourni, l'erreur est causée par un manque d'attente pour que le champ Mot de passe soit correctement rendu dans le DOM HTML. L'ajout d'une attente explicite à l'aide de "WebDriverWait" résout le problème :

System.setProperty("webdriver.gecko.driver","C:\Users\Ruchi\workspace2\SeleniumTest\jar\geckodriver-v0.17.0-win64\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
String url = "https://accounts.google.com/signin";
driver.get(url);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebElement email_phone = driver.findElement(By.xpath("//input[@id='identifierId']"));
email_phone.sendKeys("[email protected]");
driver.findElement(By.id("identifierNext")).click();
WebElement password = driver.findElement(By.xpath("//input[@name='password']"));
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(password));
password.sendKeys("test1");
driver.findElement(By.id("passwordNext")).click();

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