我正在尝试使用watin模仿使用c#登录live.com。代码如下。
IE myIE = new IE("http://login.live.com/");
myIE.TextField(Find.ByName("login")).TypeText("abc@abc.com");
myIE.TextField(Find.ByName("passwd")).TypeText("1234");
myIE.Button(Find.ByValue("Sign in")).Click();
但总是找不到文本字段:
WatiN.Core.Exceptions.ElementNotFoundException:找不到INPUT(隐藏)或INPUT(密码)或INPUT(文本)或INPUT(textarea)或TEXTAREA元素标记匹配条件:属性'name'等于'login'在{ {1}}
http://login.live.com/
主页中的示例代码适用于http://watin.org/
。
我是否遗漏了某些内容,或www.google.com
上有什么特别的内容阻止了watin的工作?
PS:我正在运行Windows 7 64位。 VS 2008与.net 3.5
答案 0 :(得分:1)
您遇到问题,因为您尝试输入的电子邮件字段是HTML5元素。
创建此SO问题中定义的TextFieldExtended类:WatiN support for HTML5 tags
然后您的代码将如下所示:
ie.GoTo("http://login.live.com/");
ie.ElementOfType<TextFieldExtended>(Find.ByName("login")).TypeText("thisismyusername@here.com");
ie.TextField(Find.ByName("passwd")).TypeText("thisismypassword");
ie.Button(Find.ByValue("Sign in")).Click();
在Watin2.1,IE9,Win7-64上进行了测试。
答案 1 :(得分:0)
你可能想试试这个:我让它在我的最后工作:
ie.Div(Find.ByCustom("innertext","someone@example.com")).Click();
ie.TextField(Find.ById("i0116")).TypeText("hello");
ie.TextField(Find.ById("i0118")).Click();
ie.TextField(Find.ById("i0118")).TypeText("Hello!");
我建议使用此测试记录器。它将为您提供在源中使用的元素名称:
http://www.codeproject.com/Articles/19180/WatiN-Test-Recorder
编辑:
通过divID查找时,我也能够使用它。
ie.Element(Find.ById("idDiv_PWD_UsernameExample")).Click()