2016-03-25 7 views
0

Seleniumプロジェクトにカスタムを追加したいと思います。ExpectedConditions 拡張メソッドは最も簡単な方法のようです。Selenium - ExpectedConditionsの拡張メソッドが認識されないか、より良い選択肢ですか?

だからこれは私の現在のコードです:

namespace SeleniumFramework.Utils 
{ 
    public static class PageUtils 
    { 
     public static Func<IWebDriver, bool> TestCondition(this ExpectedConditions expectedConditions, By locator) 
     { 
      // do stuff here 
     } 
    } 
} 

その後、私はこの拡張メソッドを呼び出すためにしようとしている:

using SeleniumFramework.Utils; 
using OpenQA.Selenium.Support.UI; 
using OpenQA.Selenium; 

namespace PageObjects 
{ 
    public class Page1 
    { 
     public void Complete() 
     { 
      Browser.Wait.Until(ExpectedConditions.TestCondition(
      By.CssSelector("[ng-cloak]"))); 
      // do more stuff 
     } 
    } 
} 

しかし、これはないコンパイルを行い、拡張メソッドので、認識されません。 この理由は何でしょうか?より多くのカスタムExpectedConditionsを追加するために、きれいな代替案がありますか?

+0

拡張メソッドにはオブジェクトが必要です。静的なafaikで拡張することはできません。関数の最初の引数はすべてオブジェクトです。 – Nyerguds

+0

もしそれがツールセットなら、とにかく_that_クラスに静的に置くべき本当の理由はありません。 'this'引数を削除して、単に' PageUtils.TestCondition() 'として使用してください。 – Nyerguds

答えて

0

私はちょうどExpectedConditionsクラスと同じように動作クラスMyConditionsを追加しました。

だから私はBrowser.Wait.Until(MyConditions.ElementIs(...))のようなコードを書くことができます。

関連する問題