2009-10-08 3 views
1

나는 watin을 사용하는 webapp의 통합 테스트를 위해 노력해 왔습니다. webapp는 fckeditor를 richtext 컨트롤 중 하나로 사용합니다. 여기 FckEditor의 Watin 테스트

는 인 FCKEditor에게 = "ctl00_HeaderMain_txtSafetyNetDescription ___ 프레임"SRC = "/ 인 FCKEditor/에디터/fckeditor.html? 인스턴스 이름 = ctl00_HeaderMain_txtSafetyNetDescription & 도구 모음 =을 myApp"폭

은 iframe id를 포함 내 웹 애플리케이션의 viewsource의 HTML의 조각 = "100 %"height = "200px"frameborder = "no"스크롤 = "no"/ iframe

watin 스크립트를 사용하여 ... 다음 코드로 프레임 객체를 가져올 수 있습니다.

Frame frame = ie.Frame(Find.ById("ctl00_HeaderMain_txtSafetyNetDescription___Frame")) ; 

이제는 텍스트를 fckeditor에 쓰고 싶습니다. 하지만 프레임으로 fckeditor에 쓰는 방법을 잘 모르겠습니다. - 누군가 나를 도와 줄 수 있습니다.

감사합니다. Iyyengar.

답변

1

파이어 폭스의 도움으로 fckeditor 용 watin 테스트 스크립트에 대한 해결책을 찾을 수 있습니다. 감사합니다 FireFox. fck 편집기에는 프레임 안에 프레임이 있습니다. 즉 내부 프레임을 노출하지만 프레임 innerhtml은 노출하지 않습니다.

여기서 FireFox는 dom 트리를 명확하게 보여줍니다.
Watin에서는 para의 innerhtml을 업데이트 할 수 없습니다. 그러나 RunScript (위대한)라는 메서드를 제공합니다. 우리는 JS를 작성하고 객체에 대해이를 실행할 수 있습니다. 이 경우 자식 프레임입니다. 그리고 문제가 해결되었습니다.

프레임 프레임 = ie.Frame (Find.ById ("ctl00_HeaderMain_txtSafetyNetDescription ___ Frame"))); 프레임 ChildFrame = frame.Frame (Find.BySrc ("javascript : void (0)")); Para para = ChildFrame.Para (Find.ByIndex (0));

// fck editr은 id가 아니기 때문에 id를 제공해야합니다. para.SetAttributeValue ("id", "fckpara"); 문자열 fckvalue = "Myfckeditor 텍스트"; string js = ""; js = js + "document.getElementById ('fckpara'). innerHTML = '"+ fckvalue + "';"; ";

 ChildFrame.RunScript(js); 

종료되었습니다. 감사합니다.

Iyyegnar.

2

이 도움이 될 수 있습니다 당신 ~

프레임 프레임 = ie.Frame ("blogBody-EditingArea");

frame.ElementWithTag ("body", Find.Any) .SetAttributeValue ("innerText", "현재의 마음情 기록"+ DateTime.Now);

+0

나는 이런 식으로해야했다 : VAR richTextFrame = browser.Frame (WatiN.Core.Find.ByTitle (". 리치 텍스트 편집기, DESCRLONG $ 0, 도움을 Alt 키를 눌러 0")); richTextFrame.Body.SetAttributeValue ("innerText", "Testing Note Details"); – Omzig