2017-11-12 7 views
-1

ページオブジェクトパターンを使用する一環として、ボタンをクリックするときにクラスをreturnする必要があります。 問題は、リスト内に複数のボタンがあり、それぞれが異なるページを返すため、別のクラスが返されることです。 私は以下を使用しようとしましたが、エラーが発生しました。動的な不明な型を返す

public dynamic ClickTheMenuButtonWorkplace<T>(string ElementID, T ClassToReturn) 
    { 
     WebDriverWait wait = new WebDriverWait(_webdriver, TimeSpan.FromSeconds(10)); 
     var MenuButton = wait.Until(x => x.FindElement(By.Id(ElementID))); 
     MenuButton.Click(); 

     return ClassToReturn; 
    } 

Tは、実際にクラスがクリックされたボタンに応じて、返される表します。

このメソッドの使用例は次のとおりです。

Lakochot IDDetails = new SargelElyon(_webdriver).ClickTheMenuInabWorkplace("nav_conts", new Lakochot(_webdriver)); 
IDDetails.foo(); 

LoginPgaeが現在webdriverを初期化し、何かを印刷foo方法を持っている唯一のコンストラクタを持っています。

私はエラーを取得しています氏は述べています: Missing compiler required member Microsoft.CSharp.RuntimeBinder.Binder.Convert

はたぶんそれをやって良い方法はとにかくありますか..?

+2

「T」を返さないのはなぜですか? – Moira

+0

申し訳ありません。あなたはTを返すように勧めますか? –

+0

あなたは「Tは実際にクラスが返されていることを表しています」と書いていますので、そういう感じですね。 – Moira

答えて

1

具体的にはTを返さないのはなぜですか?

Tは、クリックされたボタンに応じて実際にクラスが返されていることを表します。

は、これがまさにあなたが望むように見えます。

public T ClickTheMenuButtonWorkplace<T>(string ElementID, T ClassToReturn) 
{ 
    WebDriverWait wait = new WebDriverWait(_webdriver, TimeSpan.FromSeconds(10)); 
    var MenuButton = wait.Until(x => x.FindElement(By.Id(ElementID))); 
    MenuButton.Click(); 

    return ClassToReturn; 
} 

... 

var IDDetails = new SargelElyon(_webdriver) 
     .ClickTheMenuButtonWorkplace("nav_conts", new Lakochot(_webdriver)); 
//^is a Lakochot 
IDDetails.foo(); 

あなたはおそらく、ここでは必要ありませんdynamicを、使用したい場合は、Tom Coldenhoff's answerを参照してください。

関連する問題