首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法实例化类HomePage

无法实例化类HomePage
EN

Stack Overflow用户
提问于 2020-05-08 12:41:05
回答 1查看 165关注 0票数 0

嗨,我在努力找出我做错了什么,我每次都在用TestNG试用selenium,但是我不明白为什么当我把所有东西都放进我的chrome启动之前。但我希望我的代码更整洁,更少笨拙。看来我需要把司机粘在我的班里,这样它就有了全局的影响。而不是在我创建的每一个新测试中安装一个新的web驱动程序。有更好的方法吗?

代码语言:javascript
复制
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();
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-08 13:21:25

在将所需属性设置为将路径设置为可执行文件之前,将执行此行WebDriver driver = new ChromeDriver();

代码语言:javascript
复制
System.setProperty("webdriver.chrome.driver", "C:/webdrivers/chromedriver81/chromedriver.exe");

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

代码语言:javascript
复制
public class HomePage{

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

  WebDriver driver = new ChromeDriver();

  // ..

}

或在设置可执行路径属性值后,在@BeforeTest中创建新驱动程序。后一种更自然的方式

P.S. --我不确定,但是即使使用带有静态初始化的修复程序,您的代码也可能无法正常工作,因为TestNG可能会重复使用测试类对象,而且由于您要退出,所以您的类的第二个测试将无法启动(如果要添加第二个测试)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61679386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档