watin没有使用live.com

时间:2013-01-08 17:50:38

标签: c# .net watin

我正在尝试使用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

2 个答案:

答案 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()