硒:类型不匹配:不能从转换类 上课 (Selenium: Type mismatch: can

2019-10-29 08:51发布

我使用TestNG的框架。 我有一个Test1延伸类BaseTestSuite 。 另外我有一个CustomListeners一个实现类WebDriverEventListener 。 当我使用@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
         * 
         * 
         */
}

Answer 1:

硒是不是TestNG中的一部分。 该WebDriverEventListener接口不扩展ITestNGListener。 这两个类没有任何共同之处。 TestNG的需要扩展或实现侦听器的这个工作的一个类。 要结合这两个类的工作让你的类CustomListeners扩展org.testng.TestListenerAdapter类,因为它是唯一的监听器类,而不是一个接口,这样你就不会需要实现TestNG的方法。

这应该是你的类声明:

 public class CustomListeners extends TestListenerAdapter implements WebDriverEventListener

试试这个解决方法。



Answer 2:

像Kristijan鲁苏在他的回答中写道,在WebDriverEventListener接口和ITestNGListener接口都是为了两个独立的目的。

如果你写一个实现类WebDriverEventListener所有你需要这个监听器类添加到您的驱动程序对象被创建一个新的EventFiringWebDriver对象,并通过你的驱动程序对象给它的构造

EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);

在此之后就一切如常,事件驱动支持你的驱动程序对象所支持的所有方法。

凡为,

ITestNGListener具有多个子接口如IAnnotationTransformerIAnnotationTransformer2IConfigurableIConfigurationListenerIConfigurationListener2IExecutionListenerIHookableIInvokedMethodListenerIInvokedMethodListener2IMethodInterceptorIReporterISuiteListenerITestListener 。 这些让你写挂钩TestNG的相关事件,如onTestFailureonStart等。



文章来源: Selenium: Type mismatch: cannot convert from Class to Class[]