0

c# を使用して live.com へのログインを模倣するために、watin を使用しようとしています。コードは以下です。

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 (hidden) または INPUT (password) または INPUT (text) または INPUT (textarea) または TEXTAREA 要素タグが見つかりませんでした: 属性 'name' が 'login' に等しいhttp://login.live.com/

のホームページのサンプル コードはhttp://watin.org/www.google.com.

私は何かを逃しましたかhttp://login.live.com、それともワチンが機能するのを妨げる特別なものはありますか?

PS: Windows 7 64 ビットを実行しています。VS 2008 と .net 3.5

4

2 に答える 2

1

入力しようとしている電子メール フィールドが HTML5 要素であるため、問題が発生しています。

この SO の質問で定義されている TextFieldExtended クラスを作成します: HTML5 タグの WatiN サポート

次に、コードは次のようになります。

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 に答える