HTML은 요소 내의 공백을 자동으로 정규화하여 선행 / 후행 공백을 무시하고 추가 공백, 탭 및 줄 바꿈을 단일 공백으로 변환합니다. Selenium은 페이지에서 텍스트를 읽을 때이 동작을 복제하려고 시도하므로 HTML의 모든 탭과 줄 바꿈을 무시하고 텍스트가 렌더링 될 때 브라우저에서 어떻게 보이는지에 따라 어설 션을 수행 할 수 있습니다. 눈에 보이지 않는 모든 공백 (비 분리 공백 "
"포함)을 단일 공백으로 대체하여이를 수행 합니다. 보이는 모든 줄 바꿈 ( <br>
, <p>
및 <pre>
서식있는 줄 바꿈)은 유지되어야합니다.
HTML Selenese 테스트 케이스 테이블의 텍스트에 동일한 정규화 로직을 사용합니다. 여기에는 여러 가지 장점이 있습니다. 첫째, 당신의 주장이 무엇인지 파악하기 위해 페이지의 HTML 소스를 볼 필요가 없습니다. "
"기호는 최종 사용자에게 보이지 않으므로 Selenese 테스트를 작성할 때 기호에 대해 걱정할 필요가 없습니다. ( "
"을 포함하는 필드에 대해 assertText를 표시하기 위해 테스트 케이스 에 " "마커 를 넣을 필요가 없습니다
.) Selenese <td>
태그 에 추가 줄 바꿈과 공백을 넣을 수도 있습니다
. 테스트 케이스에서 텍스트와 동일한 정규화 논리를 사용하기 때문에 어설 션과 추출 된 텍스트가 정확히 일치하는지 확인할 수 있습니다.
이로 인해 테스트 케이스에 추가 공백을 삽입해야하는 드문 경우에 약간의 문제가 발생합니다. 예를 들어 " foo
" 와 같은 필드에 텍스트를 입력해야 할 수 있습니다 . 하지만 단순히 쓰면<td>foo </td>
Selenese 테스트 케이스에 추가 공백을 하나의 공백으로 교체합니다.
이 문제에는 간단한 해결 방법이 있습니다. ${space}
값이 단일 공백 인 Selenese,에서 변수를 정의했습니다
. 다음 ${space}
과 같이 자동으로 잘리지 않는 공백을 삽입하는 데
사용할 수 있습니다 <td>foo${space}${space}${space}</td>
. 우리는 또한 변수를 포함했습니다
${nbsp}
끊기지 않는 공백을 삽입하는 데 사용할 수 있습니다.
XPath는 우리가하는 방식으로 공백을 정규화 하지 않습니다 . XPath를 작성해야
//div[text()="hello world"]
하지만 링크의 HTML이 실제로 " hello world
"인 경우,
Selenese 테스트 케이스에 실제 " " 를 삽입 하여 일치 시키려면 다음과 같이해야
//div[text()="hello${nbsp}world"]
합니다..