java - 无法实例化类异常TestNG

标签 java selenium testng

当我使用 TestNG 在 Selenium 和 Java 中运行代码时出现以下错误。在多个博客/网站上提到要清理项目,所以我做了 Project->Clean 但它仍然向我抛出这个错误。有人可以指出这段代码有什么问题吗?谢谢。

package firsttestngpackage;

//import org.testng.annotations.Test;
//import org.openqa.selenium.*;
import org.testng.Assert;
import org.testng.annotations.*;
//import org.testng.asserts.*;
//import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;


public class FirstTestNGFile {

    @BeforeSuite
    public void SetBrowser(){
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");

    }

      public WebDriver driver1 = new ChromeDriver();
      public String baseurl = "http://newtours.demoaut.com/";
      public String ExpTitle = "Welcome: Mercury Tours";



  @Test
  public void CheckPageTitle() {

      driver1.get(baseurl);
      String ActTitle = driver1.getTitle();
      Assert.assertEquals(ActTitle, ExpTitle);
      driver1.quit();

  }
}

异常:

 org.testng.TestNGException: 
Cannot instantiate class firsttestngpackage.FirstTestNGFile
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:38)
    at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:387)
    at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:299)
    at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:110)
    at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:186)
    at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:120)
    at org.testng.TestRunner.initMethods(TestRunner.java:409)
    at org.testng.TestRunner.init(TestRunner.java:235)
    at org.testng.TestRunner.init(TestRunner.java:205)
    at org.testng.TestRunner.<init>(TestRunner.java:160)
    at org.testng.remote.RemoteTestNG$1.newTestRunner(RemoteTestNG.java:141)
    at org.testng.remote.RemoteTestNG$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG.java:271)
    at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:561)
    at org.testng.SuiteRunner.init(SuiteRunner.java:157)
    at org.testng.SuiteRunner.<init>(SuiteRunner.java:111)
    at org.testng.TestNG.createSuiteRunner(TestNG.java:1299)
    at org.testng.TestNG.createSuiteRunners(TestNG.java:1286)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
    at org.testng.TestNG.run(TestNG.java:1057)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29)
    ... 21 more
Caused by: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
    at com.google.common.base.Preconditions.checkState(Preconditions.java:197)
    at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:105)
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:89)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:117)
    at firsttestngpackage.FirstTestNGFile.<init>(FirstTestNGFile.java:21)
    ... 26 more

最佳答案

我已经对上面的代码进行了修改,现在它可以正常工作了......

问题是由于它是在方法中定义的驱动程序实例范围造成的。

package firsttestngpackage;

//import org.testng.annotations.Test;
//import org.openqa.selenium.*;
import org.testng.Assert;
import org.testng.annotations.*;
//import org.testng.asserts.*;
//import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;


public class FirstTestNGFile {

    public WebDriver driver1 ;

    @BeforeSuite
    public void SetBrowser(){

        System.setProperty("webdriver.chrome.driver", "/home/vicky/Documents/Jars/chromedriver");

        driver1= new ChromeDriver();

    }

      public String baseurl = "http://newtours.demoaut.com/";
      public String ExpTitle = "Welcome: Mercury Tours";



  @Test
  public void CheckPageTitle() {

      driver1.get(baseurl);
      String ActTitle = driver1.getTitle();
      Assert.assertEquals(ActTitle, ExpTitle);
      driver1.quit();

  }
}

关于java - 无法实例化类异常TestNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28858674/

相关文章:

eclipse - 如何为Eclipse安装TestNG插件

java - Testng 测试带有消息的特定异常

java - 如何通过@ManagedProperty 注解注入(inject)整个托管bean?

java - 现代 JVM 中的反射成本(6 起)

java - 如何在 python/java 中使用 Selenium 访问 Chrome 开发工具网络选项卡的请求或摘要的值?

selenium - 如何在不同的 xvfb 屏幕上运行 selenium 服务器 session ?

java - 如何在基于 testNG 的框架中在 testNG 测试类之外使用 google guice DI?

java - 我可以信任 HashMap 迭代器顺序吗?

java - 按字母顺序对其中包含数字的字符串进行排序

java - 如何使用 selenium rc 和 java 自动更改动态值