我尝试了几个选项,但仍然出现此错误:org.testng.TestNGException: Check to make sure it can be instantiate

I tried several options but this error still occurs: org.testng.TestNGException: Check to make sure it can be instantiate

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

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

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

PagegeFactory.initElements(new AjaxElementLocatorFactory(driver, TimeoutValue), this); 并没有奏效。

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

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

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

  1. 删除参数化构造函数,只使用默认构造函数。
  2. 采用一种抽象出 WebDriver 逻辑的方法,您的测试基本上可以调用该逻辑来获取 WebDriver 实例。
  3. 另外请尝试分离页面对象 classes 并测试 classes。 (你现在的classAnalizesiPreturi违反了这个预期)

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

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

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

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