TestNG错误空点异常错误

时间:2017-05-11 08:47:49

标签: java selenium selenium-webdriver testng

您好我收到以下错误,有人可以帮我解决下面的代码,

package testngpackg;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class ARXNewTest {

     ChromeDriver driver;
    @BeforeMethod
    public void set()   {
    //ProfilesIni profile = new ProfilesIni();
    //FirefoxProfile testprofile = profile.getProfile("default");
//  testprofile.setAcceptUntrustedCertificates(true);
    //testprofile.setAssumeUntrustedCertificateIssuer(true);
    System.setProperty("webdriver.chrome.driver", "C:\\Selenium Web Driver 3.0.1\\geckodriver-v0.12.0-win32\\geckodriver.exe");
     WebDriver driver = new ChromeDriver();
     String baseURL = "<URL>";
    driver.get(baseURL);
    driver.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);
    }

  @Test
  public void OpenBrowser() {
      driver.findElement(By.linkText("Log In")).click();
        driver.switchTo().frame(0);
        driver.findElement(By.id("tx_username")).sendKeys("my email id");


  }


  }

错误

失败:OpenBrowser

java.lang.NullPointerException
    at testngpackg.ARXNewTest.OpenBrowser(ARXNewTest.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)  at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:100)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:646)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:811)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1129)

执行上面的代码

时出现零点错误

2 个答案:

答案 0 :(得分:1)

您发现NullPointerException导致驱动程序在该点之前未初始化。您尝试在beforeMethod()方法中初始化WebDriver实例,但它是本地的。

使用以下代码:

driver = new ChromeDriver();

相反

WebDriver driver = new ChromeDriver();

希望它会对你有所帮助。

答案 1 :(得分:0)

以下是您的问题的解决方案 -

关于解决方案的几句话:

  1. 避免创建不必要的实例。您有ChromeDriver driver;但未在任何地方使用过它。
  2. 保持你的方法&amp;代码块分开,以便您可以正确识别它们。
  3. 在您寻求帮助时删除不需要的代码//ProfilesIni profile = new ProfilesIni();
  4. System.setProperty中,您提到Keywebdriver.chrome.driver,但您提供的valueC:\\Selenium Web Driver 3.0.1\\geckodriver-v0.12.0-win32\\geckodriver.exe
  5. 保持代码格式正确,以便更容易理解代码块。
  6. 管理开放&amp;关闭{&amp; }所以你不会遇到意想不到的结果。
  7. 根据通过代码实现的功能为方法提供名称。您的OpenBrowser()方法与浏览器打开无关。
  8. 以下是您自己的代码的工作集,其中包含一些最小的调整:

    public class Q43910679_null_pointer 
    {
    
        @BeforeMethod
        public void set()   
        {
            System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
            WebDriver driver = new ChromeDriver();
            String baseURL = "https://gmail.com";
            driver.get(baseURL);
            driver.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);
        }
    
        @Test
        public void OpenBrowser() 
        {
            System.out.println("Open Browser Method");
        }
    
    }
    
  9. 如果这回答你的问题,请告诉我。