WatiN实战

it2026-03-16  6

WatiN是开源的.net Web自动化测试工具。 下文中记录了一些常见的问题的处理。感谢原作者。 http://www.51testing.com/?uid-61753-action-viewspace-itemid-219961 本人在使用WatiN时,发现其在IE9下,取 Iframe中嵌套的Iframe里的控件时,产生错误。下了源码研究了一翻,貌似是IE的问题,这里希望有高人帮助解决。 目前我采用执行JS的方法,绕过了此问题。 记录在此,希望对大家有帮助。 主要是在WatiN的源码Document类中增加了三个方法: 1 /// <summary> 2 /// 给iframe中的某控件赋值 3 /// </summary> 4 /// <param name="frameId"></param> 5 /// <param name="inputId"></param> 6 /// <param name="value"></param> 7   public virtual void FrameValue( string frameId, string inputId, string value) 8 { 9 string js = string .Format( " $('#{0}',$('#{1}')[0].contentWindow.document).val('{2}'); " , inputId , frameId , value ); 10 this .RunScript(js); 11 } 12 13 /// <summary> 14 /// 给iframe中的某元素改变html 15 /// </summary> 16 /// <param name="frameId"></param> 17 /// <param name="elementId"></param> 18 /// <param name="value"></param> 19 public virtual void FrameHtml( string frameId, string elementId, string value) 20 { 21 string js = string .Format( " $('#{0}',$('#{1}')[0].contentWindow.document).html('{2}'); " , elementId, frameId, value); 22 this .RunScript(js); 23 } 24 25 /// <summary> 26 /// 模拟点击iframe中的元素 27 /// </summary> 28 /// <param name="frameId"></param> 29 /// <param name="buttonId"></param> 30 public virtual void FrameClick( string frameId, string buttonId) 31 { 32 string js = string .Format( " var btn = $('#{0}',$('#{1}')[0].contentWindow.document); btn.click(); " , buttonId, frameId); 33 this .RunScript(js); 34 } 35 36 /// <summary> 37 /// 等待 38 /// </summary> 39 /// <param name="seconds"></param> 40 public virtual void Wait( int seconds) 41 { 42 try 43 { 44 this .WaitUntilContainsText( " 无字天书无敌天下 " , seconds); 45 } 46 catch (Exception) 47 { 48 } 49 } 最后一个等待的方法比较丑陋,也是无耐之举,希望有高手帮助解决。   PS: 文中 的JS需要 Jquery库的支持。 无JQuery库也可实现,写法稍有差异。

转载于:https://www.cnblogs.com/davidyang78/archive/2011/03/29/1998549.html

相关资源:WatiN-2.1.0.1196.zip
最新回复(0)