Maison >Java >javaDidacticiel >Comment cliquer sur les éléments masqués par les superpositions dans Selenium ?

Comment cliquer sur les éléments masqués par les superpositions dans Selenium ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-29 14:27:10215parcourir

How to Click Elements Hidden by Overlays in Selenium?

Cliquer sur les éléments masqués par les superpositions dans Selenium

Dans l'automatisation basée sur Selenium, cliquer sur des éléments masqués par les superpositions peut être un défi courant . Le message d'erreur « L'élément MyElement n'est pas cliquable au point (x, y)... Un autre élément recevrait le clic » indique cette situation.

Résoudre le problème

Pour résoudre ce problème, envisagez les approches suivantes :

  • JavaScript ou AJAX Appels :
    Si les appels JavaScript ou AJAX provoquent l'échec du clic, essayez d'utiliser la classe Actions :
WebElement element = driver.findElement(By.id("id1"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
  • Élément absent de la fenêtre :
    Si l'élément n'est pas visible dans la fenêtre, utilisez JavaScriptExecutor pour l'introduire view :
JavascriptExecutor jse1 = (JavascriptExecutor)driver;
jse1.executeScript("scroll(250, 0)"); // if the element is on top.
jse1.executeScript("scroll(0, 250)"); // if the element is at bottom.
  • Actualisation de la page :
    Si la page s'actualise avant que l'élément ne devienne cliquable, induisez une attente :

    Thread.sleep(500); // replace 500 with an appropriate timeout in milliseconds
  • Élément non cliquable dans DOM :
    Si l'élément existe dans le DOM mais n'est pas cliquable, utilisez un ExplicitWait avec un elementToBeClickable ExpectedCondition :
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("id1")));
  • Superposition temporaire :
    Si l'élément a un temporaire superposition, utilisez un ExplicitWait avec une invisibilityOfElementLocated ExpectedCondition pour que la superposition devienne invisible :
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
  • Superposition permanente :
    Si l'élément a une superposition permanente, envoyez le clic directement à l'élément à l'aide de JavaScriptExecutor :
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!

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