2017-05-24 3 views
0

Ich habe Testdaten im XML-Format und den Text oder Wert von einem WebElement (Selen).AssertEqual zwischen Zeichenfolge und Selen Text - warum schlägt es fehl?

Ich vergleiche beide Werte und die Assert schlägt fehl. Anfangs waren die XML-Leerzeichen (aufgrund der Formatierung) das offensichtliche Problem, aber nachdem ich sie entfernt habe, bekomme ich immer noch das folgende Ergebnis. Ich habe das Fehlerprotokoll in Word eingefügt und keinen sichtbaren Unterschied in den Zeichenabstand mehr.

Output of Assert

Edit: Weitere Untersuchungen zeigen, dass die Assertion auf den Newline-Zeichen fehlschlägt. Beim Kopieren nach Word unterscheidet sich das diesem Zeichen folgende Leerzeichen zwischen dem erwarteten und dem tatsächlichen Ergebnis.

Bearbeiten 2: Der Hexcode in Dezimal ist 13 gegenüber 10, so dass sie unterschiedliche Zeichen sind. Die Frage ist, wie man das eine zum anderen konvertiert?

+0

Haben Sie versucht, sie Zeichen für Zeichen verglichen, bei dem Charakter es nicht "zu bestimmen? – Silvermind

+0

Guter Tipp, bearbeitete meine Frage mit dem Ergebnis – FDM

Antwort

0

Die Strings, die verglichen werden, hat eine Mischung aus Zeilenumbrüchen (dezimal = 10, \n) und Wagenrücklauf (Dezimal = 13, \r).


Ich denke, die einfachste Lösung, die Saiten zu normalisieren wäre:

yourString.Replace("\r\n", "\n").Replace('\r', '\n'); 
1

Ich glaube, Sie sollten richtig angeben CultureInfo. Zum Beispiel:

Assert.AreEqual(s1, s2, false, new CultureInfo("de-DE")); 

Zusätzlich können Sie versuchen, Ihre Strings Zeilenende normalisieren: Normalize newlines in C#

+0

Versucht, CultureInfo.InvariantCulture hinzuzufügen, aber das hat nicht funktioniert. – FDM

+0

Ja, nach deinem Kommentar zu Zeilenenden denke ich, dass sich die Kultur nicht ändern wird. Sie können versuchen, Text nach Zeilen als Workaround zu vergleichen (teilen Sie sie mit String.Split()). –

+0

Und geteilt durch welchen Charakter? – FDM

Verwandte Themen