2016-03-25 37 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

我添加了一個類MyConditions其工作原理就像ExpectedConditions類。

因此,我可以編寫代碼,如Browser.Wait.Until(MyConditions.ElementIs(...))