Es scheint, dass , Jungs hinter Selen, dieses Problem bereits angesprochen haben. Sie haben einige Variablen definiert, die explizit den Leerzeichen entsprechen. In meinem Fall muss ich einen XPATH ähnlich //td[text()="${nbsp}"]
verwenden.
HTML normalisiert automatisch Leerzeichen, innerhalb von Elementen führende/nachfolgende Leerzeichen ignoriert und Umwandlung zusätzliche Leerzeichen, Tabulatoren und Zeilenumbrüche in ein einzelnes Leerzeichen. Wenn Selen Text liest aus der Seite, versucht es zu dieses Verhalten duplizieren, so können Sie ignorieren alle Tabs und Zeilenumbrüche in Ihre HTML und tun basiert Behauptungen auf , wie der Text im Browser aussieht, wenn gemacht. Dazu werden alle nicht sichtbaren Leerzeichen (einschließlich nicht-brechendes Leerzeichen "
") durch ein einzelnes Leerzeichen ersetzt. Alle sichtbaren Zeilenumbrüche (<br>
, <p>
und <pre>
formatierte neue Zeilen) sollten beibehalten werden.
Wir verwenden die gleiche Normalisierungslogik auf den Text von HTML Selenese Testfall Tabellen. Dies hat eine Reihe von Vorteile. Zuerst müssen Sie nicht Blick auf die HTML-Quelle der Seite zu herausfinden, was Ihre Behauptungen sein sollten; "
" Symbole sind unsichtbar für den Endbenutzer, und so sollten Sie nicht über sie beim Schreiben Selenese Tests kümmern. (Sie brauchen nicht „
“ Marker in Ihrem Testfall zu assertText auf einem Feld zu setzen, die „
“ enthält.) Sie können auch zusätzliche setzen können Zeilenumbrüche und Leerzeichen in Selenese <td>
Tags; Da wir die gleiche Normalisierungslogik für den Testfall wie wir auf den Text verwenden, können wir sicherstellen, dass Assertions und der extrahierte Text wird genau übereinstimmen.
Dies schafft ein bisschen ein Problem auf jene seltenen Gelegenheiten, wenn Sie wirklich wollen/müssen zusätzliche Leerzeichen in Ihrem Testfall einzufügen. Zum Beispiel haben Sie möglicherweise Text in einem Feld wie eingeben müssen dies: "foo
". Aber wenn Sie einfach schreiben <td>foo </td>
in Ihrem Selenese Testfall, ersetzen wir Ihre zusätzliche Leerzeichen mit nur einem Leerzeichen.
Dieses Problem hat eine einfache Problemumgehung. Wir haben eine Variable in Selenese, ${space}
definiert, deren Wert ist ein einzelner Raum. Sie können ${space}
zu einfügen einen Raum, der nicht automatisch getrimmt wird, wie folgt: <td>foo${space}${space}${space}</td>
. Wir haben auch eine Variable ${nbsp}
enthalten, die Sie verwenden können, um ein nicht brechendes Leerzeichen einzufügen.
Beachten Sie, dass XPaths nicht normalisieren Leerzeichen wie wir tun. Wenn Sie benötigen einen XPath wie //div[text()="hello world"]
aber die HTML-Code der Link zu schreiben ist wirklich „hello world
“, werden Sie zu benötigen einfügen eine echte „
“ in Ihren Selenese Testfall, um es anzupassen zu bekommen, so: //div[text()="hello${nbsp}world"]
.
Gibt Ihre tatsächliche XSL-Transformation nichts zurück? Oder nur Xpather? –