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