2009-09-24 5 views
3

Quelle est la bonne approche pour éviter que les tests Selenium ne soient interrompus lors de la modification des attributs "Name" et "Id" d'un contrôle rendu sur une page ASP.NET en utilisant une page maître? Je veux éviter de changer mes tests quand ASP.NET rend les contrôles de la page web avec différents identifiants DOM.Test des sites ASP.NET à l'aide de pages maître avec Selenium

Répondre

5

http://www.stevetrefethen.com/blog/AutomatedTestingOfASPNETWebApplicationsUsingSelenium.aspx

Sélénium résout ce problème en utilisant XPATH et offrant la possibilité de localiser contrôles basés sur les expressions XPATH, soulager la nécessité de coder en dur la structure de la balise HTML dans un script de test. Pour exemple, le runtime ASP.NET peut rendre les attributs d'identité qui ressemblent à:

id="ctl00_cphContents_gridMaint_DataGrid" 

Trouver ce contrôle à l'aide d'un XPATH expression peut être simplifiée pour quelque chose comme ceci:

table[contains(@id, "gridMaint")] 

Dans le cas où l'emboîtement du DataGrid modifie le script continuer à fonctionner correctement tant que comme ID de la table contient le texte "gridMaint".

+0

C'est exactement ce dont j'ai besoin. Je suis curieux de savoir où je ferais cette modification à mon test. Test de sélénium, ou fait par l'API fournie? Puis-je utiliser cette technique avec l'API comme je modifie les tests que je code en utilisant .NET? – Achilles

+0

Je l'ai trouvé! Merci encore! – Achilles

3

Une autre option consiste à utiliser des localisateurs CSS. Ils sont normalement moins fragiles que XPath. Par exemple, pour cibler un div avec une classe de .myDiv, vous pouvez utiliser le localisateur "css = .myDiv". Si l'élément spécifié possède d'autres classes, le localisateur CSS fonctionnera toujours, bien que l'équivalent XPath passe de "// div [@ class = 'myDiv']" à "// div [contains (@class, 'myDiv']" De plus, les localisateurs CSS ont tendance à être plus rapide que XPath pour les navigateurs

Questions connexes