Il semble que OpenQA Les responsables de Selenium ont déjà abordé ce problème. Ils ont défini des variables pour faire correspondre explicitement les espaces. Dans mon cas, j'ai besoin d'utiliser un XPATH similaire à //td[text()="${nbsp}"]
.
J'ai reproduit ici le texte de l'OpenQA concernant cette question (trouvé ici ):
Le HTML se normalise automatiquement l'espace blanc dans les éléments, en ignorant les espaces avant/arrière et en convertissant les espaces supplémentaires, les tabulations et les nouvelles lignes en un en un seul espace. Lorsque Selenium lit le texte [ ] de dupliquer ce comportement, de sorte que vous pouvez ignorer toutes les tabulations et les sauts de ligne dans votre HTML et faire des assertions basées sur comment le texte apparaît dans le navigateur lorsqu'il est rendu. Nous faisons cela en remplaçant tous les espaces blancs non visibles (y compris les espace insécable "
") avec un espace unique. Tous les retours à la ligne visibles ( <br>
, <p>
y <pre>
formaté nouvelles lignes) doivent être préservées.
Nous utilisons la même normalisation le texte des tables de cas de test HTML Selenese tables. Cela présente un certain nombre avantages. Premièrement, vous n'avez pas besoin de regarder la source HTML de la page pour pour savoir ce que vos assertions doivent être ; "
"sont invisibles l'utilisateur final, et vous ne devriez donc pas vous s'en préoccuper lors de l'écriture de tests en sélénien. (Vous n'avez pas besoin de mettre "
marqueurs " dans votre scénario de test pour assertText sur un champ qui contient des "
".) Vous pouvez également ajouter des [ ] <td>
balises ; puisque nous utilisons la même logique de normalisation sur le scénario de test que nous le faisons sur le texte, nous pouvons garantir que les assertions et le texte extrait correspondront exactement.
Cela crée un petit problème sur t voulez/devez insérer des espaces supplémentaires dans votre scénario de test. Par exemple, vous pouvez avoir besoin de taper du texte dans un champ comme ceci : " foo
". Mais si vous vous contentez de écrire <td>foo </td>
dans votre cas de test Selenese, nous remplacerons vos espaces supplémentaires par un seul espace.
Il existe une solution simple à ce problème. Nous avons défini une var ${space}
, espace. Vous pouvez utiliser ${space}
à insérer un espace qui ne sera pas [ ] <td>foo${space}${space}${space}</td>
. W ${nbsp}
, un espace insécable.
Notez que les XPaths ne no normaliser les espaces blancs de la manière dont nous le faisons. Si vous avez besoin [ ] //div[text()="hello world"]
mais le HTML du lien est vraiment " hello world
", vous devrez insérer un vrai "
"dans votre cas de test Selenese pour qu'il corresponde, [ ] //div[text()="hello${nbsp}world"]
.
0 votes
Votre transformation XSL actuelle ne renvoie rien ? Ou seulement Xpather ?