由于全局属性问题,自动化测试未执行

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

所以我的全局属性文件中有以下内容:

browser=Chrome
QAurl = https://rahulshettyacademy.com/seleniumPractise/#/

然后我拥有属性类,以便能够读取全局属性文件:

public class TestBase {
    
    public WebDriver driver;
    
    public WebDriver WebDriverManager() throws IOException  
    {
    FileInputStream fis = new FileInputStream(System.getProperty("user.dir")+"//src//test//Resources//global.properties");
    Properties prop = new Properties();
    prop.load(fis);
    String url = prop.getProperty("QAUrl"); //The url we will pass here
    if(driver == null)
    {
        if(prop.getProperty("browser").equalsIgnoreCase("Chrome"))
        {
    driver.get(url);
    driver = new ChromeDriver();
    driver.manage().window().maximize();
        }
        if(prop.getProperty("browser").equalsIgnoreCase("firefox"))
        {
            //firefox code
        }
    }
    
    return driver;
    

    }
}

我的控制台中出现以下错误:

FAILED: runScenario("Search Experience for product search in both home and Offers page", "Search and Place the order for Products")
        Runs Cucumber Scenarios
java.lang.NullPointerException: Cannot invoke "org.openqa.selenium.WebDriver.get(String)" because "this.driver" is null
    at Utils.TestBase.WebDriverManager(TestBase.java:24)
at Utils.TestContextSetup.<init>(TestContextSetup.java:20)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at org.picocontainer.injectors.AbstractInjector.newInstance(AbstractInjector.java:145)
    at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:342)
    at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)

有什么想法我哪里出错了吗?

eclipse selenium-webdriver automation bdd cucumber-java
1个回答
0
投票

创建

TestBase
类的构造函数,并将代码放入构造函数内加载属性,如下所示:

public class TestBase {
    
    public WebDriver driver;
    public static Properties prop;

    public TestBase(){
        try {
            prop = new Properties();
            FileInputStream ip = new FileInputStream(System.getProperty("user.dir")+ "/src/main/java/com/crm"
                    + "/qa/config/config.properties");
            prop.load(ip);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public WebDriver WebDriverManager() throws IOException  {
    
         String url = prop.getProperty("QAUrl"); //The url we will pass here
         // rest of the code
    }
}

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