【问题标题】:I tried several options but this error still occurs: org.testng.TestNGException: Check to make sure it can be instantiate我尝试了几个选项,但仍然出现此错误:org.testng.TestNGException:检查以确保它可以被实例化
【发布时间】:2021-08-19 12:25:56
【问题描述】:

问题:我是 selenium 和自动化测试的初学者,我正在使用 java、TestNG 和 maven 编写 selenium 脚本。当我在一个类中编写所有内容时,一切正常,但我想要一个用于所有对象的包,一个用于测试的包,以及具有主要设置的基类。该项目将包含网站中每个页面的类和所有测试的类。

我尝试了什么: 当我尝试修改某些内容时,出现另一个错误来自 BaseClass 中的构造函数,我不知道为什么 基类是这样的: 我试过了

public BaseClass(WebDriver driver) {           
    this.driver = driver; 
    PageFactory.initElements(driver, this);
}

PagegeFactory.initElements(new AjaxElementLocatorFactory(driver, TimeoutValue), this); 没有用。

【问题讨论】:

    标签: java selenium-webdriver testing automated-tests testng


    【解决方案1】:

    你的代码的基本问题是你已经参数化了你的构造函数。

    TestNG 只知道如何调用默认构造函数(无参数构造函数)。在您的情况下,您有一个参数化构造函数,它似乎接受 WebDriver driver 实例,而 TestNG 不知道如何实例化它。

    解决此问题的最简单方法是执行以下操作:

    1. 删除参数化构造函数,只保留默认构造函数。
    2. 采用一种方法来抽象出 WebDriver 逻辑,您的测试基本上可以调用这些逻辑来获取 WebDriver 实例。
    3. 另外请尝试分离页面对象类和测试类。 (您当前的课程AnalizesiPreturi 违反了这一预期)

    以前我构建了一个名为 autospawn 的库,它使用注释驱动的方法进行浏览器实例管理。

    可以参考https://github.com/RationaleEmotions/autospawn#how-to-use-testng

    或者,您可以使用 TestNG 侦听器来实例化 webdriver 实例并通过 ThreadLocal 实例使其可用。

    更多详情请参考我的博文https://rationaleemotions.com/parallel_webdriver_executions_using_testng/

    【讨论】:

    • 我这样做了,现在我有以下错误 java: constructor BaseClass in class com.selenium.Base.BaseClass cannot be applied to given types;必需:未找到参数:org.openqa.selenium.WebDriver 或 java.lang.NoSuchMethodError:com.google.common.util.concurrent.SimpleTimeLimiter.create(Ljava/util/concurrent/ExecutorService;)Lcom/google/common/util /并发/SimpleTimeLimiter;
    • 我不知道如何适应我的代码。我试过带参数,不带参数,但是....另一个错误
    猜你喜欢
    • 2021-07-27
    • 1970-01-01
    • 2021-05-04
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多