2011-03-15 2 views

Répondre

2

À mon avis, le plus précis Way est XPath car vous pouvez utiliser XPath pour décrire la position exacte d'un élément dans le DOM, mais il y a des cas où les locators CSS fonctionnent mieux que XPaths. L'utilisation du localisateur d'ID de sélénium est la plus simple, mais à moins que l'élément que vous recherchez n'ait un ID qui n'est pas toujours utile.

Le plus grand point négatif lors de l'utilisation de XPath est la performance avec Selenium RC et les navigateurs avec de mauvais moteurs de rendu JavaScript (Think IE6/IE7). Beaucoup de travail a été fait pour essayer de rectifier cela, donc si vous utilisez des XPath bien formés qui ne recherchent que des parties spécifiques du DOM, ce problème devrait être minime. L'implémentation du webdriver Selenium est beaucoup plus rapide.

Le résumé est vraiment il n'y a pas une seule réponse cela dépend de ce que vous voulez d'un localisateur, et quels navigateurs vous testez. Personnellement, j'utilise XPath dans 99% des cas.

Personnellement, j'utilise XPath presque exclusivement avec le localisateur CSS occasionnel.

1

Les sélecteurs CSS sont plus rapides mais pas toujours disponibles; Vous pouvez toujours compter sur XPath, mais cela pourrait nuire aux performances.

1

Xpath est la façon dont j'ai utilisé. Cela aidera si vos nœuds ont des identifiants uniques.

1

Le meilleur et le plus rapide pour trouver un élément est par ID. Dans de nombreux navigateurs, le temps de trouver un élément par son identifiant est linéaire ou même constant. très vite.

Par exemple, étant donné un élément défini comme:

<input type="text" name="passwd" id="passwd-id" /> 

Vous devriez trouver comme ceci:

selenium.type("passwd-id", "test"); 

Ou si vous utilisez l'API WebDriver:

element = driver.findElement(By.id("passwd-id")); 

Si les éléments de vos pages n'ont pas d'identifiants, ajoutez-les! ou demandez aux développeurs de les ajouter!

La meilleure façon de trouver des éléments est par nom. C'est assez rapide aussi, surtout si le nom est unique sur la page.

Par exemple:

selenium.type("passwd", "test"); 

Ou si vous utilisez l'API WebDriver:

element = driver.findElement(By.name("passwd")); 

La troisième façon de trouver un élément est en utilisant les sélecteurs CSS. Les navigateurs modernes sont très efficaces pour localiser les éléments de cette façon.

La pire façon de localiser un élément est d'utiliser xpath. xpath est lent et fragile et difficile à lire.

Simon Stewart, un contributeur majeur à Sélénium, répond à cette question ici: http://www.youtube.com/watch?v=oX-0Mt5zju0&feature=related regard pour l'horodatage 39:00

Il y a aussi bien d'infos ici: http://seleniumhq.org/docs/02_selenium_ide.html#locating-elements

3

Les X-Paths sont précis, en effet. Cependant, ils sont aussi très fragiles. Toute modification apportée au site Web susceptible de faire bouger les choses a le potentiel de briser vos tests. Les identifiants sont de loin les moins fragiles, car peu importe si vos changements à un, vos tests le trouveront toujours.

Questions connexes