Расширенные методы расширения - PullRequest
0 голосов
/ 05 апреля 2019

Я создал следующий метод расширения, который «подсвечивает» найденный элемент:

public static IWebElement FindElementHighlight(this IWebElement element, By by, IWebDriver driver)
{
    element = driver.FindElement(by);
    if (driver is IJavaScriptExecutor)
    {
        ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].style.border='3px solid green'", element);
        System.Threading.Thread.Sleep(2000);
    }

    return element;
}

Дело в том, что я не хочу использовать element.FindElementHighlight(....), но я хотел бы использовать driver.FindElementHighlight(....)

Как изменить метод расширения, чтобы его можно было вызывать с помощью драйвера?

1 Ответ

0 голосов
/ 05 апреля 2019

Если вы хотите, чтобы метод расширения расширял IWebDriver, вам нужно изменить сигнатуру метода так, чтобы он начинался с this IWebDriver driver. См. Метод ниже.

public static IWebElement FindElementHighlight(this IWebDriver driver, By by)
{
    IWebElement element = driver.FindElement(by);

    if (driver is IJavaScriptExecutor)
    {
        ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].style.border='3px solid green'", element);
        System.Threading.Thread.Sleep(2000);
    }

    return element;
}

Вы называете это как

IWebElement element = Driver.FindElementHighlight(By.Id("someId"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...