简体   繁体   English

如何使用Java解决Selenium Webdriver中的空指针异常

[英]How to solve null pointer exception in selenium webdriver with java

My Java 我的Java

public class LaunchApplication {
    private String LAUNCHAPPLICATION_STATUS=null;
    private String LAUNCHAPPLICATION_MESSAGE=null;


    @Test
    @Parameters({"RUN_USING_SG","BROWSER_CODE","URL","TITLE","PLATFORM","VERSION"})
    public void LAUNCHAPPLICATION(String RunUsingSG,String BrowserCode,String URL,String Title,String Platform,String Version) throws MalformedURLException
    {
        try
        {
            System.out.println(System.getProperty("user.dir"));
            DesiredCapabilities dc=new DesiredCapabilities();
            if(BrowserCode.equalsIgnoreCase("IE32"))
            {
                System.setProperty("webdriver.ie.driver",System.getProperty("user.dir")+"/AllDrivers/IEDriverServer_32bit_OS.exe");
                dc.setBrowserName("internet explorer");
                dc.setVersion(Version);
                Config.driver = new InternetExplorerDriver();

            }
            if(BrowserCode.equalsIgnoreCase("IE64"))
            { 
                System.setProperty("webdriver.ie.driver",System.getProperty("user.dir")+"/AllDrivers/IEDriverServer_64bit_OS.exe");
                dc.setBrowserName("internet explorer");
                dc.setVersion(Version);
                Config.driver = new InternetExplorerDriver();
            }
            if(BrowserCode.equalsIgnoreCase("FF"))
            { 
                FirefoxProfile firefoxProfile = new FirefoxProfile();
                dc.setBrowserName("firefox"); 
                dc.setVersion(Version);
                Config.driver=new FirefoxDriver();
            }
            if(RunUsingSG.equalsIgnoreCase("Y"))
            {
                Config.driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),dc);

            }

            if(Platform.equalsIgnoreCase("WINDOWS"))
            {dc.setPlatform(org.openqa.selenium.Platform.WINDOWS);}
            Config.driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
            Config.driver.get(URL);
            Config.driver.manage().window().maximize();
            //perform final validation
            if(Config.driver.getTitle().toLowerCase().equalsIgnoreCase(Title))
            {
                LAUNCHAPPLICATION_STATUS="PASS";
                LAUNCHAPPLICATION_MESSAGE="EXPECTED BROWSER TITLE:"+Title+", ACTUAL BROWSER TITLE :"+Config.driver.getTitle()+", FOR THE URL:"+URL;
            }


        }//end of try

        catch(Exception generalException)
        {
            LAUNCHAPPLICATION_STATUS="FAIL";
            LAUNCHAPPLICATION_MESSAGE= "EXPECTED BROWSER TITLE:"+Title+", ACTUAL BROWSER TITLE :"+Config.driver.getTitle()+", FOR THE URL:"+URL+". DETAILS:Exception Occoured:"+generalException.getLocalizedMessage();

        }
    }

    //@BeforeTest
     //public void f1(ITestContext ctx) {

        //  if(ctx.getCurrentXmlTest().getParameter("EXECUTE").equals("NO"))
          //    {
            //  throw new SkipException("skiping this test case");
            //}


}

I am Getting an error of null pointer exception in above code when executing through testng.I don't know why? 通过testng执行时,上面的代码中出现空指针异常错误。我不知道为什么? and when I am executing through junit it is working fine?So Any Help? 当我通过junit执行时工作正常吗?有什么帮助吗? I Think this may occured because I have declared LAUNCHAPPLICATION_STATUS=null; 我认为这可能是因为我已声明LAUNCHAPPLICATION_STATUS = null; or any other problem. 或任何其他问题。

org.testng.TestNGException: java.lang.NullPointerException
at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:341)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:88)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
Caused by: java.lang.NullPointerException
at       org.testng.xml.TestNGContentHandler.xmlClasses(TestNGContentHandler.java:342)
at   org.testng.xml.TestNGContentHandler.endElement(TestNGContentHandler.java:693)
at   com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
at   com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at   com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at  com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at  com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at  com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.testng.xml.XMLParser.parse(XMLParser.java:39)
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:17)
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:10)
at org.testng.xml.Parser.parse(Parser.java:168)
at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:311)
... 3 more

The exception occurs in TestNGContentHandler.endElement() which is a pretty strong hint that the problem is in your XML file, not your LaunchApplication class. 该异常发生在TestNGContentHandler.endElement() ,这很明显地表明问题出在您的XML文件中,而不是在LaunchApplication类中。 It might be worth filing a bug against TestNG to provide a clearer error message in this case, depending on what the issue ends up being. 在这种情况下,值得针对TestNG提交错误以提供更清晰的错误消息,具体取决于问题的根源。

Try creating a basic "hello world" @Test , so that you can verify TestNG (and your TestNG configuration) runs at all. 尝试创建一个基本的“ hello world” @Test ,以便您可以验证TestNG(以及您的TestNG配置)是否完全运行。 If it fails, we know it's a configuration issue. 如果失败,我们知道这是配置问题。 Otherwise if it works you can narrow it down to the specific problematic tests. 否则,如果可行,您可以将其范围缩小到特定的有问题的测试。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM