2012-09-13 2 views
3

우리의 기능 테스트 자동화를 위해 우리는 Webtest Plugin과 함께 QTP를 사용합니다. DOM을 제어 할 수 있지만 쉬운 방법은 아닙니다. VBScript와 부분적으로 자바 스크립트를 사용하여 솔루션을 찾을 수 있습니다.프레임 셋을 포함한 실제 HTML 페이지 소스 전체 얻기

테스트 중에 오류가 발생하면 그 순간 전체 HTML 페이지 원본을 캡처하고 싶습니다. 나중에 우리 보고서에서 오류를 검사 할 때, 우리는 그 순간에 어떤 일이 일어 났으며 DOM이 어떻게 보 였는지 알 수 있습니다.

따라서이 소스를 포착 할 가능성을 찾습니다. 일반적으로 나는 프레임에 위치하지 실제 내용은 불행하게도이 만 태그 프레임의 전체 내용을 캡처합니다

htmlSource = browser("micClass:=Browser").page("micClass:=Page").Object.documentElement.outerHTML 

또는

htmlSource = browser("micClass:=Browser").page("micClass:=Page").Object.getElementsByTagName("html")(0).innerHTML 

함께했고, 프레임,하지만. (IFrame이 아닌 클래식 프레임)

이제 프레임 세트의 콘텐츠를 포함하여 전체 DOM 소스를 실시간으로 캡처하고 싶습니다. IE 개발자 도구의 HTML보기에 소스가 나타나 듯이 올바른 순서와 위치에서 그들을 원합니다.

아무도 내가 관리 할 수있는 아이디어가 있습니까?

답변

1

정말로 이 페이지의 HTML에서 프레임의 소스를 인라인으로 포함하려면이 필요합니다.이를 달성하는 유일한 방법은 각 요소에 대해 HTML을 재귀 적으로 작성하는 것입니다. 이는 모든 요소에 대해 outerHTML에서 innerHTML을 제거해야 자식 요소로 이동 한 다음 올바르게 삽입해야하므로 많은 작업이 필요할 수 있습니다.

프레임의 HTML이 외부에있는 상태에서 살면 Page.ChildObjects() 설명을 micclass=Frame과 함께 사용하고 페이지에 사용한 것과 동일한 메커니즘 (frames(i).Object.documentElement.outerHTML)을 사용할 수 있습니다.

페이지 아래에 모든 프레임이 생기므로 프레임에 DOM이 중첩되어 있어도 Frame 테스트 개체의 하위 개체를 가져올 필요가 없습니다.

+0

모티 (Motti), 고맙습니다. 그런 느낌 일 것 같습니다. 재귀 적으로 구축하는 것은 너무 많은 성능을 필요로하므로 getframes 트릭을 시도해보십시오. 추한 일 이겠지만 그것이 내 유일한 기회라면 추한 것입니다. – AutomatedChaos

관련 문제