HTML автоматически нормализует пробелы в элементах, игнорируя ведущие / конечные пробелы и преобразуя лишние пробелы, табуляции и новые строки в единый пробел. Когда Selenium считывает текст со страницы, он пытается дублировать это поведение, поэтому вы можете игнорировать все вкладки и новые строки в своем HTML и делать утверждения в зависимости от того, как текст выглядит в браузере при отображении. Мы делаем это, заменяя все невидимые пробелы (включая неразрывный пробел "
") одним пробелом. Все видимые символы новой строки ( <br>
, <p>
и <pre>
отформатированные новые строки) должны быть сохранены.
Мы используем ту же логику нормализации для текста таблиц тестовых примеров HTML Selenese. Это дает ряд преимуществ. Во-первых, вам не нужно смотреть в исходный HTML-код страницы, чтобы понять, какими должны быть ваши утверждения;
Символы " " невидимы для конечного пользователя, поэтому вам не нужно беспокоиться о них при написании тестов Selenese. (Вам не нужно помещать
маркеры " " в тестовом примере для assertText в поле, содержащее "
".) Вы также можете добавить дополнительные символы новой строки и пробелы в свои <td>
теги Selenese
; поскольку мы используем ту же логику нормализации для тестового примера, что и для текста, мы можем гарантировать, что утверждения и извлеченный текст будут точно соответствовать.
Это создает небольшую проблему в тех редких случаях, когда вы действительно хотите / должны вставить лишние пробелы в свой тестовый пример. Например, вам может потребоваться ввести текст в такое поле: « foo
». Но если вы просто напишете <td>foo </td>
в своем тестовом примере Selenese, мы заменим ваши лишние пробелы одним пробелом.
У этой проблемы есть простой способ решения. Мы определили переменную в Selenese,
${space}
значение которой представляет собой один пробел. Вы можете использовать , ${space}
чтобы вставить пробел , который не будет автоматически обрезается, как это:
<td>foo${space}${space}${space}</td>
. Мы также включили переменную
${nbsp}
, которую вы можете использовать для вставки неразрывного пробела.
Обратите внимание, что XPath не нормализует пробелы, как мы. Если вам нужно написать XPath как
, //div[text()="hello world"]
но HTML из ссылки действительно « hello world
», вам нужно вставить реальный «
» в вашем Selenese теста, чтобы получить его в соответствие, например:
//div[text()="hello${nbsp}world"]
.