O HTML normaliza automaticamente o espaço em branco dentro dos elementos, ignorando os espaços iniciais / finais e convertendo espaços extras, guias e novas linhas em um único espaço. Quando o Selenium lê o texto da página, ele tenta duplicar esse comportamento, para que você possa ignorar todas as guias e novas linhas do seu HTML e fazer afirmações com base na aparência do texto no navegador quando renderizado. Fazemos isso substituindo todo o espaço em branco não visível (incluindo o espaço sem quebra "
") por um único espaço. Todas as novas linhas visíveis ( <br>
, <p>
e <pre>
novas linhas formatadas) devem ser preservadas.
Usamos a mesma lógica de normalização no texto das tabelas de casos de teste HTML Selenese. Isso tem várias vantagens. Primeiro, você não precisa consultar a fonte HTML da página para descobrir quais devem ser suas afirmações; os
símbolos " " são invisíveis para o usuário final e, portanto, você não precisa se preocupar com eles ao escrever os testes Selenese. (Você não precisa colocar
marcadores " " no seu caso de teste para afirmarText em um campo que contém "
".) Você também pode colocar novas linhas e espaços extras nas <td>
tags Selenese
; como usamos a mesma lógica de normalização no caso de teste que usamos no texto, podemos garantir que as asserções e o texto extraído correspondam exatamente.
Isso cria um problema nas raras ocasiões em que você realmente deseja / precisa inserir espaço em branco extra no seu caso de teste. Por exemplo, pode ser necessário digitar texto em um campo como este: " foo
". Mas se você simplesmente escrever <td>foo </td>
no seu caso de teste Selenese, substituiremos seus espaços extras por apenas um espaço.
Esse problema tem uma solução alternativa simples. Definimos uma variável em Selenese
${space}
, cujo valor é um espaço único. Você pode usar ${space}
para inserir um espaço que não será cortado automaticamente, como este:
<td>foo${space}${space}${space}</td>
. Também incluímos uma variável
${nbsp}
, que você pode usar para inserir um espaço sem quebra.
Observe que os XPaths não normalizam os espaços em branco da maneira que fazemos. Se você precisa escrever um XPath como
//div[text()="hello world"]
, mas o HTML da ligação é realmente " hello world
", você precisa inserir um real "
" em seu caso de teste Selenese para obtê-lo para corresponder, como este:
//div[text()="hello${nbsp}world"]
.