也就是说,VS2012认为这个控件是隐藏的控件。可是,这个控件明明是显示的控件,并不是隐藏的控件,为何在回放的时候,VS2012无法识别呢?
另外一点可以注意到,在这个报错信息下,还非常清楚的列出了这个控件的所有属性,比如:
ControlType:”Edit”
Id:”username”
等等,一切仿佛都预示着,这个控件被很明确的找到了。
而那句寻找用户名的语句是在登陆界面的如下语句:
uI用户名Edit.Text ="a";
如果需要寻找的控件是在浏览器直接打开的页面中(情况A),那么是可以成功的寻找到这个控件的,而如果,用户在浏览器直接打开的页面中点击了某个按钮或者链接而出现的页面中才会有这个控件(情况B),那么就会有一定的几率,VS2012无法识别到这个控件。
于是,我就在想,VS2012,在寻找控件的时候是否有一定的机制?
于是我模拟A的寻找机制,如果情况A百分之百找到控件,那么情况B是否可以找到?
于是有以下几种情况按照情况A寻找控件
1)
#region Variable Declarations
HtmlEdit uI用户名Edit =this.UIMap.UIChrome插件谷歌浏览器插件提供ChrWindow.UI登录Chrome插件Document.UI用户名Edit;
#endregion
uI用户名Edit.Text ="a";
2)
#region Variable Declarations
HtmlEdit uI用户名Edit =new HtmlEdit(this.UIMap.UIChrome插件谷歌浏览器插件提供ChrWindow.UI登录Chrome插件Document);//必须是HtmlEdit上一级以上
#endregion
uI用户名Edit.SearchProperties[HtmlEdit.PropertyNames.Id] ="UserName";
uI用户名Edit.SearchProperties[HtmlEdit.PropertyNames.Name] ="UserName";
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.LabeledBy] ="用户名";
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.Type] ="SINGLELINE";
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.Title] =null;
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.Class] =null;
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.ControlDefinition] ="name=\"UserName\" id=\"UserName\" type=\"text";
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.TagInstance] ="3";
uI用户名Edit.Find(); //这句话加或不加都可以
uI用户名Edit.Text ="a";
3)
#region Variable Declarations
HtmlEdit uI用户名Edit =new HtmlEdit(this.UIMap.UIChrome插件谷歌浏览器插件提供ChrWindow);//必须是HtmlEdit上一级以上
#endregion
uI用户名Edit.SearchProperties[HtmlEdit.PropertyNames.Id] ="UserName";
uI用户名Edit.SearchProperties[HtmlEdit.PropertyNames.Name] ="UserName";
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.LabeledBy] ="用户名";
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.Type] ="SINGLELINE";
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.Title] =null;
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.Class] =null;
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.ControlDefinition] ="name=\"UserName\" id=\"UserName\" type=\"text";
uI用户名Edit.FilterProperties[HtmlEdit.PropertyNames.TagInstance] ="3";
uI用户名Edit.Find(); //这句话加或不加都可以
uI用户名Edit.Text ="a";