首页 > 解决方案 > e_driver.register(eventListener) 中“注册”的替代方法是什么?

问题描述

我以前使用 java 在 selenium 中使用 WebEventListner,但我的工作场所使用 c#。我在“注册”e_driver.register(eventListener) 处收到错误;

可以请一些在c#中的帮助,拜托。


namespace TestFramework.Utils
{
    public class WebEventListener
    {
        public static void beforeNavigateTo(String url, IWebDriver driver)
        {
            Console.WriteLine("Before navigating to: '" + url + "'");
        }

        public static void afterNavigateTo(String url, IWebDriver driver)
        {
            Console.WriteLine("Navigated to:'" + url + "'");
        }
}

 [OneTimeSetUp]
        public void InitializeOnce()
        {
            PropertiesCollection.driver = BrowserFactory.PrepareBrowser(Config.browser);
            driver = PropertiesCollection.driver;

            e_driver = new EventFiringWebDriver(driver);
            eventListener = new WebEventListener();
            e_driver.register(eventListener);
            driver = e_driver;
        }

标签: c#selenium

解决方案


C# 在语法上与 Java 有着根本的不同。由于C# 在其语法中本机支持事件,因此 .NET 实现EventFiringWebDriver利用了这些。此外,事件名称会有所不同,以使 .NET 绑定对 .NET 开发人员感觉“自然”。您想要的是以下内容:

public IWebDriver CreateEventFiringDriver(IWebDriver driver)
{
    // Assume driver is a valid IWebDriver instance.
    var eventDriver = new EventFiringWebDriver(driver);
    eventDriver.Navigating += NavigatingEventHandler;
    eventDriver.Navigated += NavigatedEventHandler;
    return eventDriver;
}

private void NavigatingEventHandler(object sender, WebDriverNavigationEventArgs e)
{
    Console.WriteLine("Before navigating to: '" + e.Url + "'");
}

private void NavigatedEventHandler(object sender, WebDriverNavigationEventArgs e)
{
    Console.WriteLine("Navigated to:'" + e.Url + "'");
}

推荐阅读