J'ai un lien html href
<a href="/docs/configuration">App Configuration</a>
en utilisant Selenium je dois cliquer sur le lien. Actuellement, j'utilise le code ci-dessous -
Driver.findElement(By.xpath("//a[text()='App Configuration']")).click();
Mais ce n'est pas rediriger vers la page. J'ai aussi essayé ci-dessous le code -
Driver.findElement(By.xpath(//a[@href ='/docs/configuration']")).click();
Mais cela jette ci-dessous exception -
org.openqa.Selenium.ElementNotVisibleException: L'élément n'est pas visible et ne peut donc pas être interagi avec Durée de la commande ou délai d'attente: 13 millisecondes
Le lien est visible et la page est complètement chargée. Je ne sais pas ce qui ne va pas avec mon code.
webDriver.findElement(By.xpath("//a[@href='/docs/configuration']")).click();
La ligne ci-dessus fonctionne bien. Veuillez supprimer l'espace après href.
Si cet élément est visible dans la page, si l'élément n'est pas visible, veuillez faire défiler la page puis effectuer une action de clic.
Utilisation
driver.findElement(By.linkText("App Configuration")).click()
D'autres approches seront
JavascriptLibrary jsLib = new JavascriptLibrary();
jsLib.callEmbeddedSelenium(Selenium, "triggerMouseEventAt", elementToClick,"click", "0,0");
ou
((JavascriptExecutor) driver).executeScript("arguments[0].click();", elementToClick);
Pour une réponse détaillée, Voir cet article
Utilisez un wait
explicite pour l'élément comme ceci:
WebDriverWait wait1 = new WebDriverWait(driver, 500);
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("path of element"))).click();
On dirait que la balise a
est cachée. N'oubliez pas que Selenium n'est pas capable d'interagir avec un élément caché. Javascript
est la seule option dans ce cas.
By css = By.cssSelector("a[href='/docs/configuration']");
WebElement element = driver.findElement(css);
((JavascriptExecutor)driver).executeScript("arguments[0].click();" , element);
Vous pouvez utiliser cette méthode:
Pour les liens, si vous utilisez linkText();
, il est plus efficace que tout autre localisateur.
driver.findElement(By.linkText("App Configuration")).click();