web-dev-qa-db-fra.com

Comment cliquer sur un lien href avec Selenium

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.

13
Psl
 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.

20
Saritha G

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

9
Arjit

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();
3
Juhil Somaiya

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);
0
Saifur

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();
0
Nitinkumar