2012-04-09 1 views
1

私はHTMLでリンクしています。私はPage Objectパターンを使ってSeleniumでスクリプトを書いています。しかし、オブジェクトがpag​​eFactoryで初期化されたときにMouseMoveアクションを実行することはできません。 「これは失敗します」例外がスローされますなぜ私はSelenium WebDriver for C#とPageFactory for Initializationを使ってマウスを動かすことができません

class BingPage 
{ 
private readonly IWebDriver driver; 
public static readonly String BASE_URL = "http://bing.com/"; 
[FindsBy(How = How.XPath, Using = ".//*[@id='scpt2']/a[text()='Shopping']")] 
private IWebElement ShoopingLink; 

public BingPage(IWebDriver driver) 
{ 
    this.driver = driver; 
    //Page Factory will use Driver to init searchButton and queryEdit objects 
    PageFactory.InitElements(driver, this); 
} 

public void HoverShoppingLink() 
{ 
    Actions builder = new Actions(driver); 

    IWebElement elem = driver.FindElement(By.XPath(".//*[@id='scpt2']/a[text()='Shopping']")); 
    builder.MoveToElement(elem).Build().Perform();//This will work 

    builder.MoveToElement(ShoopingLink).Build().Perform(); //This will fail 
} 
} 

行がコメントでマークされた: だから、私はそのようなクラスを持っている「移動アクションのための場所を提供しなければならない。パラメータ名:actionTarget」

しかし、ときに私が手動でルックアップ要素 - それは動作します。 誰かが私にその理由を教えてもらえますか?

IEのドライバを搭載した.Net、.Net 4.0ではセレン2.0です。

答えて

2

要素のために作成されたプロキシオブジェクト(ProxiedWebElementInterceptor)は、Actionsクラスがそのメソッドに必要とするものであるため、プロキシでないため、ILocatableです。これは.NETバインディングのバグです。現在のソースで修正されており、近いうちに公開される次の一般公開版(2.21)で利用可能になります。

+0

2.48.2バージョンで再度再生します。これで、オブジェクトがターゲットタイプと一致しません –

関連する問題