&引用;无法实例化类";通过Selenium Java TestNG执行测试时出错

&引用;无法实例化类";通过Selenium Java TestNG执行测试时出错,java,selenium,selenium-webdriver,webdriver,testng,Java,Selenium,Selenium Webdriver,Webdriver,Testng,我第一次使用Selenium和TestNG,我一直试图通过元素的ID来搜索元素,但是我一直得到一个“CannotInstanceClass”错误。这是我的代码: import org.testng.annotations.*; import org.openqa.selenium.*; import org.openqa.selenium.firefox.*; public class NewTesting { WebDriver driver = new FirefoxDriver

我第一次使用Selenium和TestNG,我一直试图通过元素的ID来搜索元素,但是我一直得到一个“CannotInstanceClass”错误。这是我的代码:

import org.testng.annotations.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.*;

public class NewTesting {

    WebDriver driver = new FirefoxDriver();

    @BeforeTest
    public void setUp() {
        driver.get("http://book.theautomatedtester.co.uk/chapter1");
    }

    @AfterTest
    public void tearDown() {
        driver.quit();
    }

    @Test
    public void testExample() {
        WebElement element = driver.findElement(By.id("verifybutton"));
    }

}
也许我没安装什么东西?我为eclipse安装了TestNG插件并添加了WebDriver JAR文件,我还需要做更多吗? 我试着遵循多个教程,但我不断得到错误,我希望有人可以帮助。提前谢谢

编辑: 我现在有这个:

public class NewTest {
     private WebDriver driver;

    @BeforeTest
    public void setUp() {
        System.setProperty("webdriver.gecko.driver","C:\\Program Files\\Selenium\\FirefoxDriver\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        driver.get("http://book.theautomatedtester.co.uk/chapter1");
    }

    @AfterTest
    public void tearDown() {
        driver.quit();
    }

    @Test
    public void testExample() {
        WebElement element = driver.findElement(By.id("verifybutton"));
    }

}
它现在确实打开了网站,但我现在收到一个nullpointer异常:

配置失败:@AfterTest拆卸 java.lang.NullPointerException 在NewTest.tearDown(NewTest.java:21)

如果您使用的是windows,前面的问题可能会对您有所帮助

它提到您可以这样初始化FirefoxDriver:

System.setProperty("webdriver.gecko.driver","G:\\Selenium\\Firefox driver\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();

替换这组导入:

import org.testng.annotations.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.*;
与:

此外,您必须从下载所需格式的GeckoDriver可执行文件,提取二进制文件,然后初始化FirefoxDriver

您的有效代码块将是:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.testng.annotations.AfterTest;

public class NewTesting {

    WebDriver driver;

    @BeforeTest
    public void setUp() {
        System.setProperty("webdriver.gecko.driver","C:\\path\\to\\geckodriver.exe");
        driver = new FirefoxDriver();
        driver.get("http://book.theautomatedtester.co.uk/chapter1");
    }

    @AfterTest
    public void tearDown() {
        driver.quit();
    }

    @Test
    public void testExample() {
        WebElement element = driver.findElement(By.id("verifybutton"));
    }

}

您可以添加更多的异常详细信息吗?最好提供完整的异常以查看它。处理导入的最佳方法是将红色的squggled文本悬停,并以这种方式修复导入。这样,您就得到了正确的导入(如果有多个导入,则假设您做出了正确的选择)。您的问题已经被提出并得到了回答。如果您修复了原始问题,请打开一个包含新错误详细信息的新问题。。。不要继续编辑这一个与进一步的问题。这使得未来的读者无法理解正在发生的事情,并且对当前问题的有效答案感到困惑。我试过了,但现在它无法识别“后测”和“测试”中的驾驶员。签出更新的解决方案并让我知道状态。这项功能正在运行。我刚刚发现了错误:)虽然仍有一堆红色文本,但最后显示:默认测试运行:1,失败:0,跳过:0默认套件测试运行总数:1,失败:0,跳过:0那么红色文本正常吗?@Rugo我不确定…红色文本。。。你看到了。这些可能是警告,当您运行默认测试时,我们可以接受这些警告:1,失败:0,跳过:0
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.testng.annotations.AfterTest;

public class NewTesting {

    WebDriver driver;

    @BeforeTest
    public void setUp() {
        System.setProperty("webdriver.gecko.driver","C:\\path\\to\\geckodriver.exe");
        driver = new FirefoxDriver();
        driver.get("http://book.theautomatedtester.co.uk/chapter1");
    }

    @AfterTest
    public void tearDown() {
        driver.quit();
    }

    @Test
    public void testExample() {
        WebElement element = driver.findElement(By.id("verifybutton"));
    }

}