刚开始以为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的测试代码不行,哪位知道不妨告知一声!
而FreeTextBox控件的编辑器实际上是一个iframe对象,html如下所示(xxx为控件ID):
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
frame.HtmlDocument.body.innerHTML = "详细要求:<br/>(略)";
完整的代码如下(xxx为控件ID)::
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
感谢风生水起对WatiN的介绍。
觉得WatiN比Nunitasp的代码简洁一下。另外不清楚怎么自动响应alert/confirm/fileupload之类的对话框,使用WatiN的测试代码不行,哪位知道不妨告知一声!