web-dev-qa-db-fra.com

Comment obtenir une balise HTML parent avec Selenium WebDriver à l'aide de Java

J'ai un test qui recherche <span class="legend">. Sur un niveau précédent, j'ai un fieldset qui contient plusieurs valeurs. Voici mon problème. Je ne reçois pas le localisateur pour ce fieldset.

Tout d'abord, je reçois une liste avec tous les objets class=legend:

List<WebElement> groupList = driver.findElements(By.className("legend"));

Cela fonctionne parfaitement, j'ai une liste avec plusieurs Webelements.

Maintenant, je veux parcourir cette liste et enregistrer chaque valeur du groupe de champs du niveau précédent uniquement. Le problème est que Selenium ne trouve pas l’identifiant de l’ensemble de champs.

J'ai essayé tempGroupElement.getAttribute("id") pour obtenir l'ID, mais cela ne fonctionne pas.

Une idée?
Merci!

23
Ed H

J'ai une méthode pour cela en C #.

public static IWebElement GetParent(IWebElement e)
{
   return e.FindElement(By.XPath(".."));
}

J'espère que ça aide :)

38
Tedesco

Vous pouvez utiliser WebElement.findElement(By.xpath("parent::*"))

J'ai essayé, ça marche en sélénium.

11
abuuu

Cela créera une extension sur IWebElement qui vous permettra d’appeler GetParent directement sur l’enfant IWebElement.

public static class MyExtensions
{
    public static IWebElement GetParent(this IWebElement node)
    {
        return node.FindElement(By.XPath(".."));
    }
}  

Exemple d'utilisation ...

IWebElement node = WebDriver.FindElement('..');
IWebElement parent = node.GetParent();
0
TWilly