尝试查找WebElement时出现Selenium NullPointerException

时间:2015-01-15 04:34:57

标签: selenium xpath nullpointerexception selenium-webdriver

尝试执行下面的方法时,我收到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");
}

下面的删除是在#34; 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"); 
} 

2 个答案:

答案 0 :(得分:0)

您似乎已经宣布驱动程序两次。一个在班级和级别一个用openbrowser方法。

您只初始化openbrowser驱动程序。类级驱动程序仍为null。因此,test1方法抛出空指针异常。

因此,在openbrowser方法中删除驱动程序重新声明。只是这样做,它应该工作。

driver = new FirefoxDriver(profile); 

答案 1 :(得分:0)

问题: 您的 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
}