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"].