【问题标题】:TestNG error null point exception errorTestNG错误空点异常错误
【发布时间】:2017-10-10 04:14:31
【问题描述】:

您好,我收到以下错误,谁能帮我调试下面的代码,

打包测试ngpackg;

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");


  }


  }

错误

失败:打开浏览器

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)

执行上述代码时出现空点错误

【问题讨论】:

标签: java selenium selenium-webdriver testng


【解决方案1】:

这是您问题的解决方案-

关于解决方案的几句话:

  1. 避免创建不必要的实例。你有ChromeDriver driver;,但没有在任何地方使用它。
  2. 将方法和代码块分开,以便正确识别它们。
  3. 在您寻求帮助时删除不需要的代码//ProfilesIni profile = new ProfilesIni();
  4. System.setProperty 中,您将Key 称为webdriver.chrome.driver,但您将value 提供为C:\\Selenium Web Driver 3.0.1\\geckodriver-v0.12.0-win32\\geckodriver.exe
  5. 保持代码格式正确,以便更容易理解代码块。
  6. 管理{} 的打开和关闭,以免遇到意外结果。
  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");
        }
    
    }
    

如果这能回答您的问题,请告诉我。

【讨论】:

    【解决方案2】:

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

    使用以下代码:

    driver = new ChromeDriver();
    

    相反

    WebDriver driver = new ChromeDriver();
    

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多