0

我正在尝试使用 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 元素标记匹配条件:属性“名称”等于“登录”http://login.live.com/

主页中的示例代码http://watin.org/适用于www.google.com.

我是否错过了什么或者有什么特别的东西http://login.live.com阻止了 watin 工作?

PS:我正在运行 Windows 7 64 位。VS 2008 与 .net 3.5

4

2 回答 2

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 上测试。

于 2013-01-08T22:05:06.617 回答
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()
于 2013-01-08T17:53:58.377 回答