2016-03-25 3 views
0

Ich möchte einige benutzerdefinierte ExpectedConditions zu meinem Selenium-Projekt hinzufügen. Erweiterungsmethoden scheinen der einfachste Weg zu sein.Selen - Erweiterungsmethode für ExpectedConditions nicht erkannt, oder: bessere Alternativen?

Also das ist meine aktuellen Code:

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

Dann versuche ich, diese Erweiterung Methode aufzurufen:

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 
     } 
    } 
} 

Dies schließt jedoch nicht Kompilierung, da die Erweiterungsmethode wird nicht erkannt. Was könnte der Grund dafür sein? Gibt es Alternativen, die genauso sauber sind, um mehr benutzerdefinierte ExpectedConditions hinzuzufügen?

+0

Eine Erweiterungsmethode benötigt ein Objekt; Sie können nicht mit einem statischen afaik erweitern. Nach all dem ersten Argument in der Funktion ist ein Objekt. – Nyerguds

+0

Wenn es ein Toolset ist, gibt es keinen wirklichen Grund, es in _that_ Klasse als statisch zu setzen. Entfernen Sie das Argument 'this' und verwenden Sie einfach 'PageUtils.TestCondition()' – Nyerguds

Antwort

0

ich eine Klasse MyConditions hinzugefügt, die ebenso wie die ExpectedConditions Klasse arbeitet.

So kann ich Code wie Browser.Wait.Until(MyConditions.ElementIs(...)) schreiben.

Verwandte Themen