2010-12-29 2 views
0

SelectメソッドのSelectListクラスの既存の実装、またはonchangeイベントをトリガーしないメソッドSelectByValueを特に満足しません。私はWatiN ElementFactoryに既に存在する要素タグを登録する

ElementFactory.RegisterElementType(typeof(ZwtSelectList)); 

を使用する場合、私はSelectListから継承自分のクラスZwtSelectListを作成し、問題のある方法

[ElementTag("select")] 
public class ZwtSelectList : SelectList 
{ 
    public ZwtSelectList(DomContainer container, ElementFinder finder) : base(container, finder) { } 

    public override void Select(string text) 
    { 
     base.Select(text); 
     DomContainer.Eval(string.Format("$('#{0}').change()", Id)); 
    } 
} 

を上書きしたい

は、しかし、私は

System.InvalidOperationException: Types SelectList and ZwtSelectList have both registered element tag 'SELECT' 

を取得ありすでに登録されているタグの登録を解除する方法は?すでに登録されているタグを上書きする方法はありますか?

答えて

0

現在、ネイティブのWatiN要素の代わりに独自の要素を登録することはサポートされていません。しかし、あなたが使用することができます。

browser.Element<ZwtSelectList>(Find.Any).Select(...); 

これは、カスタム要素はに登録され、オリジナルの要素を継承している限り、既に登録されている要素のためのカスタム要素を再登録できるようにElementFactory実装を変更することは困難にすべきではありません(あなたのSelectListで行ったのと同じように)

SourceForgeのSVNリポジトリから最新のコードを取得することをお勧めします。WatiN RC1以降の上記のサンプルコードで問題が修正されています。

+0

お返事ありがとうございます。私は現在、現在のRC1であるWatiN-2.0.20.1089-net-2.0を使用しています。私は、あなたが提案したもののパッチを書こうとします。 –

+0

あなたのソリューションのbrowser.Element (Find.Any).Select(...);存在しません。あなたはbrowser.ElementOfType (Find.Any)を意味しましたか.Select(...); ?私がそれを行うと、登録されていないタイプのZwtSelectLIstが登録され、同じ例外が発生します。 –

+0

こんにちは、継承されたタイプの登録を許可するパッチを入手できるように、sourceforgeでメッセージを送りました。あなたが見ることができればあなたの時間をありがとう。 –

0

WatiNは、 "change"イベントと同じではない "onchange"というイベントを発生させます。 ポスターのコードで要素の「変更」イベントが発生しますが、Watanの実装であるSelect()とその変形は機能しません。その理由は、WatiN 2.0のコードがバグで、「変更」イベントを発生させず、むしろイベントハンドラをフックすることのない「オンチェンジ」イベントであるためです。

このバグが修正された場合、WatiNコア経由でSelect()を使用すると正しく動作すると思われます。

関連する問題