【问题标题】:Selenium NullPointerException while trying to find WebElement尝试查找 WebElement 时出现 Selenium NullPointerException
【发布时间】:2015-01-15 04:34:56
【问题描述】:

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

【问题讨论】:

  • 您确定驱动程序不为空吗?驱动程序是否已初始化?如果可能,请提供完整的代码。
  • 驱动不为空,已经初始化。浏览器打开,网站链接也打开。以下是代码:@BeforeClass public static void openbrowser() { FirefoxProfile profile = new FirefoxProfile(); System.out.print("\n浏览器打开"); WebDriver driver = new FirefoxDriver(profile); driver.manage().window().maximize(); driver.get("网站网址"); }
  • @Abinav,如果可能,请提供完整的代码。
  • 以下是代码:@BeforeClass public static void openbrowser() { FirefoxProfile profile = new FirefoxProfile(); System.out.print("\n浏览器打开"); WebDriver driver = new FirefoxDriver(profile); driver.manage().window().maximize(); driver.get("https://"); }
  • WebDriver driver = new FirefoxDriver(profile); --在此处删除 WebDriver。试试 driver = new FirefoxDriver(profile);

标签: selenium xpath nullpointerexception selenium-webdriver


【解决方案1】:

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

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

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

driver = new FirefoxDriver(profile); 

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 2021-10-25
      • 2023-03-31
      • 2017-07-03
      • 2017-08-13
      • 2010-12-11
      • 1970-01-01
      相关资源
      最近更新 更多