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