无法实例化类HomePage

问题描述 投票:0回答:1

嗨,我正在努力看看我做错了什么,我正在尝试用测试NG的硒化webdriver,每次都是很基本的东西,但我不明白为什么当我把所有的东西都放到我的chrome之前,chrome就会启动。但我希望我的代码更整洁,不那么笨拙。看来我需要把驱动贴在我的类里,这样它就会有全局影响。而不是在我创建的每一个新的测试中安装一个新的web驱动。有什么更好的方法吗?

Cannot instantiate class HomePage
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:40)
    at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:363)
    at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:275)
    at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:126)
    at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:191)


  import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;

    import org.testng.annotations.*;


    public class HomePage {
         WebDriver driver = new ChromeDriver();



        @BeforeTest
        public void beforeTest() {
            System.setProperty("webdriver.chrome.driver", "C:/webdrivers/chromedriver81/chromedriver.exe");

            driver.get("http://www.dotdotloans.co.uk");
        }


        @Test
        public void verify36monthloan3250() {

            driver.findElement(By.cssSelector("Tarife")).click();
            // confirm monthly repayment
            // credit charge 2 decimal places
            //total to pay 2 decimal places
            //APR
            //Click Apply now
            //verify string has 3250 and 36 months

            System.out.println("Welcome");


        }

        @AfterTest
        public void AfterTest() {
            driver.quit();
        }
    }
selenium testng
1个回答
0
投票

这一行 WebDriver driver = new ChromeDriver(); 在你设置所需的属性来设置可执行文件的路径之前,会被执行。

System.setProperty("webdriver.chrome.driver", "C:/webdrivers/chromedriver81/chromedriver.exe");

你可以在静态初始化块中设置属性值。

public class HomePage{

  static{
    System.setProperty(blah-blah);
  }

  WebDriver driver = new ChromeDriver();

  // ..

}

或在内部创建新的驱动程序 @BeforeTest 在你设置了可执行路径属性值之后。后者是更自然的方式.

P.S. - 我不确定,但即使使用静态初始化的修复方法,你的代码也可能无法正常工作,因为TestNG可能会重用测试类对象,而且因为你是 戒烟 你的司机你的类的第二个测试将无法启动(如果你将添加第二个测试)。

© www.soinside.com 2019 - 2024. All rights reserved.