【问题标题】:java.lang.NullPointerException Selenium 2 classesjava.lang.NullPointerException Selenium 2 类
【发布时间】:2018-04-23 20:06:15
【问题描述】:

当从我的本地计算机运行时,我的程序运行良好,没有使用带有远程 Web 驱动程序的 selenium 网格。但是,当我使用带有远程 Web 驱动程序的 selenium 网格设置相同的测试用例时。在 Eclipse 中获取消息:

java.lang.NullPointerExceptionat PP_OBJ_Login.Adminlogin(PP_OBJ_Login.java:38)
at PP_Main.step01_Login(PP_Main.java:86)

现在我知道上面的意思是第 38 行和第 86 行是这两个类中的问题我的问题是我不知道为什么当我将 selenium 网格与远程 Web 驱动程序一起使用时会发生这种情况。

public class PP_Main {

     private static WebDriver driver;
     private static String homeUrl;
     //private String homeTitle ="Google";
     @SuppressWarnings("unused")
     private boolean acceptNextAlert = true;
     private static StringBuffer verificationErrors = new StringBuffer();


     @BeforeClass
     public static void setUp() throws Exception {

      //----------This works and envokes IE browser -------
      System.setProperty("webdriver.ie.driver", "C:\\IEDriverServer.exe");
      DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
      cap.setCapability(CapabilityType.BROWSER_NAME, DesiredCapabilities.internetExplorer());
      cap.setBrowserName("internet explorer");
      cap.setPlatform(Platform.ANY);
      RemoteWebDriver driver = new RemoteWebDriver(new URL("http://51.19.210.111:5555/wd/hub"), cap);
      driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
      String url = "https://wfn-iat.adp.com/public/index.htm";
      driver.get(url);

     }
  @Test
public void step01_Login() throws Exception {
 PP_OBJ_Login.AdminVisiable(driver);
 PP_OBJ_Login.Adminlogin(driver).click();-- -> line 86
 PP_OBJ_Login.UserName(driver).sendKeys("NorfolkAutoUser6@adp");
 PP_OBJ_Login.Submitbtn(driver).click();
 PP_OBJ_Login.Password(driver).sendKeys("iatiat01");
 Thread.sleep(2000);
 PP_OBJ_Login.Submitbtn(driver).click();
 Thread.sleep(5000);
}


PP_OBJ_Login.Java


public class PP_OBJ_Login {

 private static WebElement element = null;

 // WebElement Adminlogin
 public static WebElement Adminlogin(WebDriver driver) {-- -- -> Line 38
  element = driver.findElement(By.id("adminLogin"));
  return element;
 }

 // WebElement input Field
 public static WebElement UserName(WebDriver driver) {
  element = driver.findElement(By.id("USER"));
  return element;
 }

我希望它可以使用 selenium 网格和远程 Web 驱动程序工作。有没有办法解决空指针问题?

【问题讨论】:

  • 我唯一能想到的另一件事是私有静态 WebElement element = null;导致问题
  • 我敢打赌“司机”是空的。如果你放一个 System.out.println(driver); 会有什么结果?就在 "element = driver.findElement(By.id("adminLogin"));" 之前?
  • 查看 1 秒
  • 你的权利是(null)
  • 好的,那么你必须找出原因。不幸的是,我对 Selenium 本身的了解还不够,无法在这一点上为您提供详细的提示。

标签: java selenium-webdriver selenium-grid remotewebdriver


【解决方案1】:

您的问题是,您将“驱动程序”定义为类成员,但您没有实例化它。所以它一直是空的。

 public class PP_Main {

    private static WebDriver driver;
    private static String homeUrl;
    //...

你在 setUp() 中实例化的驱动程序只在方法本身内有效。尽管它具有完全相同的名称,但它不是您全局定义的“驱动程序”。

@BeforeClass
public static void setUp() throws Exception {

    // ...

    cap.setPlatform(Platform.ANY);
    RemoteWebDriver driver = new RemoteWebDriver(new URL("http://51.19.210.111:5555/wd/hub"), cap);

    // ...   
}

改为以这种方式实例化它

public class PP_Main {

    private static RemoteWebDriver driver;
    private static String homeUrl;
    //...


   @BeforeClass
   public static void setUp() throws Exception {

        // ...

        cap.setPlatform(Platform.ANY);
        driver = new RemoteWebDriver(new URL("http://51.19.210.111:5555/wd/hub"), cap);

        // ...   
}

这应该可行。

【讨论】:

  • 我会试试这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多