c# - 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# 在语法上与 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 + "'");
}
推荐阅读
- jenkins - 添加自定义路径到 jenkins 节点的 sh 路径
- amazon-web-services - CloudWatch Insights 语法 - Sum() 字节
- swift - 从未出现在视图中的子类创建按钮
- python-3.x - Python:如何捕获 os.chdir FileNotFoundError 执行
- php - 从json获取每天的总和值
- excel - 如何在 txt 框 vba 中搜索值的问题?
- r - 如何在 R 的斐波那契数列的偶数位置添加数字?
- git - 将 git 子模块拉入源目录(不是 .git/modules)
- android - 是否有 Handler.runWithScissors(final Runnable r, long timeout) 的 RxJava(Rxandroid) 等价物?
- objective-c - 如何以@noescap 的方式在 Swift4 中使用带有块的 Objective-C 函数?