Strona główna > Twarda spacja: jak znaleźć element po tekście?

Twarda spacja: jak znaleźć element po tekście?

Wyobraźcie sobie taką sytuację: potrzebujecie znaleźć element na stronie po tekście. Jak po tekście to prosta sprawa, trzeba użyć XPatha, na przykład takiego:

.//p[text()='Jakiś tam paragraf z bardzo twardą spacją']

Odpalasz radośnie testy, żeby się upewnić, że do tego momentu przechodzą. A one nie przechodzą. No to idziesz zobaczyć jeszcze raz, jak ten element wygląda, a tam widzisz coś takiego:

<p>Jakiś tam paragraf&nbsp;z bardzo twardą spacją</p>

Sprawdzasz wyświetlany tekst ponownie i tam żadnego potworka po słowie “paragraf” nie ma, spacja jest. 

No i racja, bo ten potworek, to twarda spacja. 

>> Więcej o XPath dowiesz się tutaj

Co to jest twarda spacja

Twarda spacja nazywana też spacją niełamliwą, to znak pozwalający np.na takie zachowanie dwóch sąsiadujących ze sobą wyrazów, żeby nie zostały podzielone przez nową linię. Możemy tego użyć np. do tego, żeby w języku polskim pojedyncza litera nie została sama na końcu linii (np. spójniki “a” oraz “i” albo jednoliterowe przyimki). W kodzie strony taki znak zobaczymy jako &nbsp;. Gdybyśmy chcieli takiego znaku użyć, to nie zrobimy tego na Windowsie w tak prosty sposób jak wstawienie zwykłej spacji. Możemy ją natomiast wstawić wciskając lewy ALT i wpisując na klawiaturze numerycznej kombinację 255 lub 0160. 

XPath to ogarnie?

Ogarnie, jak mu to ładnie podamy. I na filmie pokazuję dwa sposoby, na jakie możemy to ugryźć. A dlaczego nie użyć np. metody contains() w XPathie i zignorować ten znak? No bo nie zawsze będzie nam chodziło o znalezienie elementu, który zawiera jakiś tekst. Czasami będziemy wprost potrzebowali konkretnego tekstu w elemencie, żeby ten element zlokalizować w sposób jednoznaczny.

Czy tylko twarda spacja?

Mimo, że na filmie pokazuję przypadek użycia ze znakiem twardej spacji, podobne rozwiązanie możecie zastosować również do innych kłopotliwych znaków. Podrzucam tabelę znaków Unicode oraz altkody, o których mówię na filmie. 

Jak zawsze zachęcam także do subskrypcji kanału na YouTube – dzięki temu nic Wam nie umknie.