WatiN中给FreeTextBox控件赋值

        刚开始以为FreeTextBox控件对应到WatiN中的TextField类,实际上FreeTextBox使用了iframe的技术(可以通过IEDevToolBar来察看,这个工具可以在微软网站上下载),而iframe对应到WatiN中的Frame类。当使用TextField来给FreeTextBox控件赋值的时候会出现System.Runtime.InteropServices.COMException异常:ditional information: Can't move focus to the control because it is invisible, not enabled, or of a type that does not accept the focus.
        而FreeTextBox控件的编辑器实际上是一个iframe对象,html如下所示(xxx为控件ID):
< IFRAME  class ="xxx_DesignBox"  id ="xxx_designEditor"  style ="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; WIDTH: 100%; PADDING-TOP: 0px; HEIGHT: 199px"  src ="about:blank" ></ IFRAME >
        因此,采用Frame类来获取FreeTextBox的相关信息。代码如下:
frame  =  ie.Frame(  "xxx _designEditor "  )
   frame.HtmlDocument.body.innerHTML = "详细要求:<br/>(略)";
Frame类的ID为FreeTextBox控件的ID和_designEditor的组合。Frame类不像TextField类,没有TypeText()方法。所以只能使用innerHTML给其赋值。运行的时候会看到WatiN给FreeTextBox控件赋值了,但由于在此FreeTextBox控件上应用了RequireFieldValidator,验证通不过,说明还有问题!在调试的过程中发现,只要切换到Html模式,验证就通过了,于是再增加一行切换代码。
        完整的代码如下(xxx为控件ID)::
            Frame frame  =   null ;
            frame 
=  ie.Frame(  "xxx _designEditor "  );
            frame.HtmlDocument.body.innerHTML 
=   " 自动测试项目<br/>详细要求:(略) " ;
            ie.TableCell( 
" xxx_htmlModeTab "  ).Click( );    

        感谢 风生水起WatiN的介绍
        觉得WatiN比Nunitasp的代码简洁一下。另外不清楚怎么自动响应alert/confirm/fileupload之类的对话框,使用WatiN的测试代码不行,哪位知道不妨告知一声!

你可能感兴趣的:(text)