尝试查找 WebElement 时出现 Selenium NullPointerException

Selenium NullPointerException while trying to find WebElement

在尝试执行以下方法时,我收到 NullPointerException:

@Test
public static void test1() {  
System.out.print("\nTo find UserName element");
WebElement element =driver.findElement(By.xpath("//input[@name='email']"));
WebElement element = driver.findElement(By.id("email"));
element.sendKeys("abhinav_shankar");
System.out.print("\nElement found");
System.out.print("\njunittest2 class-test1 executed before sleep");
Thread.sleep(15000);
System.out.print("\njunittest2 class-test1 executed after sleep");
}

以下异常在行 "WebElement element = driver.findElement(By.id("email"));"

Thread [main] (Suspended (exception NullPointerException))  
    Mytestclass.test1() line: 44    
    Mytestclass.main(String[]) line: 21 

我尝试使用上面代码中编写的 xpath,但它也给出了同样的错误。

编辑:

@BeforeClass 
public static void openbrowser() {  
    FirefoxProfile profile = new FirefoxProfile(); 
    System.out.print("\nBrowser open"); 
    WebDriver driver = new FirefoxDriver(profile); 
    driver.manage().window().maximize(); 
    driver.get("website-url"); 
} 

您似乎已经声明了两次 driver。一个在 class 级别,一个在 openbrowser 方法中。

您只初始化了 openbrowser 驱动程序。 class 级驱动程序仍然为空。所以,test1方法抛出空指针异常。

所以,去掉openbrowser方法中的驱动重声明。就这样就可以了,它应该可以工作。

driver = new FirefoxDriver(profile); 

问题: 您的 Webdriver 对象似乎是在函数 openbrowser() 内声明的,因为驱动程序对象范围仅适用于该函数。所以 NullpointerException 可能是由于驱动程序造成的。

解决方法: 全局声明 Webdriver 并在 openbrowser 方法中初始化,以便您也可以在 test1() 或任何其他方法中使用它。

public WebDriver driver;
@BeforeClass 
public static void openbrowser() {  
//Driver initialization
}

@Test
public static void test1() {  
//Use the driver here
}