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
Libérer: 2024-11-26 09:21:09
original
450 Les gens l'ont consulté

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal