如何在C#中实现WebDriverEventListener?

MrP*_*Pug 3 c# testing selenium automated-tests selenium-webdriver

如何WebDriverEventListener在C#中实现?

在java导入中我没有问题:

import org.openqa.selenium.support.events.AbstractWebDriverEventListener;
Run Code Online (Sandbox Code Playgroud)

但是,WebDriverEventListener在C#中看不到,我无法实现它.

par*_*dak 6

您必须将Selenium.support.dll添加到您的项目中。

定义并实例化事件触发驱动程序,如下所示:

IWebDriver driver = new FirefoxDriver();

EventFiringWebDriver firingDriver = new EventFiringWebDriver(driver);
firingDriver.ElementClicked += new EventHandler<WebElementEventArgs>(firingDriver_ElementClicked);
Run Code Online (Sandbox Code Playgroud)

对于要触发的事件:

firingDriver.findElement(By.xpath("...").click();
Run Code Online (Sandbox Code Playgroud)

事件定义为:

private void firingDriver_ElementClicked(object sender, WebDriverExceptionEventArgs e) {
    // do action required to handle what happens after clicking button you have mentioned.
}
Run Code Online (Sandbox Code Playgroud)

EventFiringDriver selenium 源代码在这里,相应的测试在这里,供您参考。


Jim*_*ans 6

在C#中侦听事件是通过使用该语言公开的标准事件机制来完成的.您可以使用事件的正确签名创建方法,并将其附加到事件.示例方法如下所示:

void MyElementClickedHandler(object sender, WebElementEventArgs e)
{
    Console.WriteLine("Clicked");
}
Run Code Online (Sandbox Code Playgroud)

附加事件看起来像这样:

// Assumes driver is a properly created
// IWebDriver instance. 
IWebDriver eventDriver = new EventFiringWebDriver(driver);
eventDriver.ElementClicked += new EventHandler<WebElementEventArgs>(MyElementClickedHandler);
Run Code Online (Sandbox Code Playgroud)

在事件处理程序方法内,该EventArgs参数允许您检查与事件关联的属性.在元素事件的情况下,EventArgs将具有对IWebElement触发的事件的引用.要断开事件处理程序,请使用标准C#-=运算符.