본문 바로가기

파워쉘

[파워쉘] getElementsByClassName 사용하기

특정 웹 페이지에서 클리퍼 기능을 구현하기 위해 웹 소스를 분석하던 중,

특이한 소스를 만났다.


이 곳의 소스는 태그에 Name이나 ID를 거의 사용하지 않고 Class를 사용하였다.

이 경우 Document에서 getElementsByClassName를 사용하면 되는데 아쉽게도

Document.getElementsByClassName는 없다.


열심히 서핑을 한 결과 

documentElement.getElementsByClassName에 있다는 것을 알아냈다.


즉, 다음과 같이 사용하면 class="abcd" 인 태그를 찾아낼 수 있는 것이다.

 $category = $ie.Document.documentElement.getElementsByClassName('abcd') | %{$_.innerText} | Select -First 1


그런데 어제는 분명 이것이 잘 먹었는데 오늘은 제대로 작동하지 않는 것이 아닌가?

왜 그럴까 오전 내내 고민하고 삽질하다가 드디어 원인을 알아냈는데 굉장히 어이 없는 것이었다.


내가 어제 저녁에 분석중이던 웹 페이지가 호환성 보기로 설정되어 있지 않길래 호환성 보기 설정을 한 것이 원인이었다.



그래서 다시 주소창 오른쪽에 호환성 보기 설정을 해제한 후 코드를 실행하니 정상적으로 잘 되었다.


추측컨대, documentElement는 IE9 이상에서만 사용가능한 것인가보다.