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