【问题标题】:Selenium: Type mismatch: cannot convert from Class<CustomListeners> to Class<? extends ITestNGListener>[]Selenium:类型不匹配:无法从 Class<CustomListeners> 转换为 Class<?扩展 ITestNGListener>[]
【发布时间】:2018-11-10 06:16:30
【问题描述】:

我正在使用 TestNG 框架。我有一个扩展BaseTestSuiteTest1 类。我还有一个实现WebDriverEventListenerCustomListeners 类。当我在 Test 类中使用 @Listeners(CustomListeners.class) 注释时,出现以下错误。请帮忙解决。

Type mismatch: cannot convert from Class<CustomListeners> to Class<? extends ITestNGListener>[]

测试类

@Listeners(CustomListeners.class) //Error line
public class Test1 extends BaseTestSuite {

    LoginPage lp;
    TabMenu tm;

    @Test(priority = 0, testName = "Verify Login")
    public void login() throws Exception {
        lp = new LoginPage(driver, test);
        tm = new TabMenu(driver, test);
        driver.get(Constants.url);
        lp.verifyLoginPageLogo();
        lp.setUserName("dmin");
        lp.setPassword("admin");
        lp.clickLoginBtn();
        tm.verifyTabMenu();
        tm.isCurrentTab("Dashboard");
    }
}

监听类

public class CustomListeners implements WebDriverEventListener {
/*
         * 
         * All Implemented methods
         * 
         * 
         */
}

【问题讨论】:

    标签: selenium testng listeners


    【解决方案1】:

    Selenium 不是 TestNG 的一部分。 WebDriverEventListener 接口不扩展 ITestNGListener。这两个类没有任何共同之处。 TestNG 需要一个扩展或实现其中一个侦听器的类才能工作。 要将这两个类结合起来工作,请让您的类 CustomListeners 扩展 org.testng.TestListenerAdapter 类,因为它是唯一的侦听器类,而不是接口,因此您不需要实现 TestNG 方法。

    这应该是你的类声明:

     public class CustomListeners extends TestListenerAdapter implements WebDriverEventListener
    

    试试这个解决方法。

    【讨论】:

    • IDE 不够智能,无法检查您是否向@Listeners 注解发送了正确的类,它只能检查您是否实际发送了类。
    【解决方案2】:

    就像 Kristijan Rusu 在他的回答中所写的那样,WebDriverEventListener 接口和 ITestNGListener 接口用于两个不同的目的。

    如果您编写了一个实现 WebDriverEventListener 的类,您只需将该侦听器类添加到您的驱动程序对象,只需创建一个新的 EventFiringWebDriver 对象并将您的驱动程序对象传递给它的构造函数

    EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);

    此后一切照旧,eventDriver 支持您的驱动程序对象支持的所有方法。

    在哪里,

    ITestNGListener有多个sub interfacesIAnnotationTransformer,IAnnotationTransformer2,IConfigurable,IConfigurationListener,IConfigurationListener2,IExecutionListener,IHookable,IInvokedMethodListener2,IInvokedMethodListener,@3 987654338@、IReporterISuiteListenerITestListener。这些让您可以为 TestNG 相关事件编写钩子,例如 onTestFailureonStart 等。

    【讨论】:

    • 我尝试了解决方法public class CustomListeners extends TestListenerAdapter implements WebDriverEventListener,错误消失了,但我的听众都没有工作。例如。 beforeFindBy。在beforeFindBy 方法中编写了一个简单的打印语句。
    • 谢谢。我刚刚发现我错过了在驱动程序中创建CustomListerners类和register的对象。现在可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多