2016-08-14 102 views
0

我得到“显示java.lang.NullPointerException”当我试图执行基于POM我的测试用例。 类BrowserFactory让我选择浏览器,类Flipkart_Login基于POM商店特定页面的所有元素,并具有Valid_Login() 最后Test_Flipkart_Login类的方法 - 要求executon的Valid_Login()方法,但是当我尝试要执行这个类,我得到java.lang.NullPointerException。硒POM显示java.lang.NullPointerException

请指教!

FAILED:Flipkart_Login_Test 显示java.lang.NullPointerException 在DataProviders.ConfigDataProvider.getURL(ConfigDataProvider.java:31) 在TestCases.Test_Flipkart_Login.Flipkart_Login_Test(Test_Flipkart_Login.java:19)

公共类ConfigDataProvider { 静态属性pro;

public ConfigDataProvider() 
{ 

    File src = new File("C:\\Data\\Bimlesh\\Flipkart_HybridFramework\\Flipkart.Hybrid.FrameworkComplete\\Configuration\\Config.Properties"); 

    try 
    { 
     FileInputStream fis = new FileInputStream(src); 
     pro = new Properties(); 
     pro.load(fis); 

    } catch (Exception e) 
    { 
     System.out.println("The Config exception is :"+e.getMessage()); 
    } 

} 

public static String getURL() 
{ 
    String URL = pro.getProperty("URL"); 
    return URL; 
} 

public static String ChromePath() 
{ 
    String Chrome = pro.getProperty("Chromepath"); 
    return Chrome; 
} 

public static String IEPath() 
{ 
    String IE = pro.getProperty("IEpath"); 
    return IE; 
} 

}

公共类BrowserFactory { 静态webdriver的驱动程序;

public static WebDriver getBrowser(String BrowserName) 
{ 
    if(BrowserName.equalsIgnoreCase("Firefox")) 
    { 
     driver = new FirefoxDriver(); 
    } 
    else if(BrowserName.equalsIgnoreCase("Chrome")) 
    { 
     System.setProperty("webdriver.chrome.driver", ConfigDataProvider.ChromePath()); 
     driver = new ChromeDriver(); 
    } 
    else if(BrowserName.equalsIgnoreCase("IE")) 
    { 
     System.setProperty("webdriver.ie.driver", ConfigDataProvider.IEPath()); 
     driver = new InternetExplorerDriver(); 
    } 

    driver.manage().window().maximize(); 
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
    return driver; 
} 

public void ShutDown(WebDriver driver) 
{ 
    driver.quit(); 
} 

}

公共类Flipkart_Login { 的webdriver驱动器;

public Flipkart_Login(WebDriver driver) 
{ 
    this.driver=driver; 
} 

@FindBy(xpath="//a[text()='Log In']") WebElement Login_Click; 
@FindBy(xpath="//input[@class='_2zrpKA' and @type='text']") WebElement Enter_Email; 
@FindBy(xpath="//input[@class='_2zrpKA _3v41xv' and @type='password']") WebElement Enter_Pass; 
@FindBy(xpath="//button[@type='submit' and @class='_3zLR9i _1LctnI _36SmAs']") WebElement Login_Button; 

public void Valid_Login() 
{ 
    Login_Click.click(); 
    Enter_Email.sendKeys("[email protected]"); 
    Enter_Pass.sendKeys("xxx"); 
    Login_Button.click(); 

} 

}

公共类Test_Flipkart_Login { 的webdriver驱动器;

@Test 
public void Flipkart_Login_Test() 
{ 
    driver = BrowserFactory.getBrowser("Firefox"); 
    driver.get(ConfigDataProvider.getURL()); 
    Flipkart_Login page1 = PageFactory.initElements(driver, Flipkart_Login.class); 
    page1.Valid_Login(); 

} 

}

回答

0

你已经初始化的COnfigDataProider的构造Pro属性,但使用的是从你的测试类getURL方法静态调用。因此pro将会是null并且不会被初始化。除去静态调用并使用构造函数或使pro在静态块中静态初始化。

相关问题