Obtenir le localisateur de déjà trouvé WebElement

Est-il un moyen élégant pour obtenir le localisateur de Sélénium WebElement, que j'ai déjà trouvé/identifié?

Pour être clair sur la question: je veux un "localisateur" utilisé pour trouver l'élément. Je suis dans ce cas pas intéressé par un attribut spécifique ou d'un localisateur comme le css-locator.

Je sais que j'ai pu analyser le résultat d'une WebElement méthode toString ():

WebElement element = driver.findElement(By.id("myPreciousElement"));
System.out.println(element.toString());

Sortie serait par exemple:

[[FirefoxDriver: firefox sur WINDOWS (....)] -> id: myPreciousElement]

si vous avez trouvé votre élément par xpath:

WebElement element = driver.findElement(By.xpath("//div[@someId = 'someValue']"));
System.out.println(element.toString());

Ensuite, votre sortie sera:

[[FirefoxDriver: firefox sur WINDOWS (....)] -> xpath: //div[@someId = 'someValue']]

J'ai donc actuellement écrit ma propre méthode qui analyse cette sortie et me donne le "recréé" localisateur.

MAIS est-il une façon plus élégante déjà mis en œuvre dans le Sélénium pour obtenir le localisateur utilisé pour trouver l'élément?

Je ne pouvais pas trouver un la mesure.

Si vous êtes sûr, il n'y a aucun hors de la boîte, pouvez-vous penser à une raison pourquoi les API de créateurs pourrait ne pas fournir cette fonctionnalité?

*Malgré le fait que cela n'a rien à voir avec la question, si quelqu'un se demande pourquoi vous avez besoin de cette fonctionnalité, juste 2 exemples:

  • si vous utilisez PageFactory vous probablement n'aura pas les repères en tant que membre des variables dans votre classe de la Page, mais vous pourriez en avoir besoin plus tard, lorsque l'on travaille avec les éléments de la page.
  • vous travaillez avec les Api de personnes qui ont juste utiliser la Page de l'Objet Modèle sans PageFactory et donc vous attendre à la main sur les locators au lieu de l'élément lui-même.*
double possible de Comment obtenir un sélecteur CSS en utilisant Selenium WebDriver?
ne pense pas que c'est un doublon avec votre proposition de question, parce que je suis particulièrement intéressé Par le localisateur. Comme vous avez répondu à cette question, ce serait plus logique alors de récupérer le "css" de localisation, ce qui pourrait ne pas exister, mais il y a toujours un localisateur pour récupérer un élément
Avez-vous jamais comprendre cela? Je suis l'aide de la PageFactory la mise en œuvre et ont pratiquement aucun moyen de vérifier qu'un élément est affiché ou non.

OriginalL'auteur drkthng | 2015-07-28