当前位置: 首页 > 知识库问答 >
问题:

尝试单击页面中的任何元素时使用“java.lang.NullPointerException”

叶健柏
2023-03-14

直到昨天,代码还完全正常运行。现在,当我试图运行任何测试用例时,Selenium(使用Java)在主页本身抛出Java.lang.NullPointerException。下面是一个由于错误而失败的简单测试用例。

下面是我的测试类,它正在调用TestBase类的构造函数,然后初始化驱动程序对象。当控件进入HomePage.ClickSearchLink()方法时,测试结束并出现错误。

package com.ss.qa.testcases;

import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.openqa.selenium.chrome.*;
import com.ss.qa.base.TestBase;
import com.ss.qa.pages.HomePage;
import com.ss.qa.pages.SearchPage;

public class SearchPageTest extends TestBase{

HomePage homepage;
SearchPage searchpage;

SearchPageTest(){
    super();
}

@BeforeMethod
public void setUp(){
    initialization();
    homepage = new HomePage();
    searchpage = homepage.clickSearchLink();
}

@Test
public void verifyResultCount() {
    int count = searchpage.countResults("a");
    Assert.assertEquals(count, 15);
}   

@AfterMethod
public void tearDown() {
    driver.quit();
    }
}

下面是我的TestBase类,它正在调用Test基类的构造函数并初始化驱动程序对象

package com.ss.qa.base;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Driver;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.events.EventFiringWebDriver;

import com.ss.qa.util.TestUtil;
import com.ss.qa.util.WebEventListener;


public class TestBase {

public static WebDriver driver = null;
public static Properties prop;
public static EventFiringWebDriver e_driver;
public static WebEventListener eventListener;

public TestBase(){       
try {
         prop = new Properties();
         FileInputStream ip = new FileInputStream("D:\\Users\\eclipse- 
workspace\\src\\main\\java\\com\\ss\\qa\\config\\config.properties");
         prop.load(ip);

     } catch (FileNotFoundException e) {
         e.printStackTrace();            
     } catch (IOException e) {
         e.printStackTrace();
     }      
 }

 public static void initialization() {

        String browserName = prop.getProperty("browser");
         if (browserName.equalsIgnoreCase("chrome")) {
              System.setProperty("webdriver.chrome.driver", "C:\\Users\\Downloads\\"chromedriver_win32\\chromedriver.exe");

              driver = new ChromeDriver();  
              System.out.println("driver=" + driver); 
         }       
         else if (browserName.equalsIgnoreCase("FF")) {
              System.setProperty("webdriver.gecko.driver", "C:\\Users\\Downloads\\geckodriver-v0.21.0-win64\\geckodriver.exe");
              driver = new FirefoxDriver();           
         }

         e_driver = new EventFiringWebDriver(driver);
         eventListener = new WebEventListener();
         e_driver.register(eventListener);
         driver = e_driver;

         driver.manage().window().maximize();
         driver.manage().deleteAllCookies();
         driver.manage().timeouts().pageLoadTimeout(TestUtil.PAGE_LOAD_TIMEOUT , TimeUnit.SECONDS);
         driver.manage().timeouts().implicitlyWait(TestUtil.IMPLICIT_WAIT , TimeUnit.SECONDS);
         driver.get(prop.getProperty("url"));
    }

}

<!-- Method in Event Listener class which is showing in error -->

    public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) {
    System.out.println("Find happened on " + arg1.toString() + " Using method " + arg0.toString());

}

好心建议。

共有1个答案

夏青青
2023-03-14

WebEventListener.java:31:保持空检查,您正在使用的元素之一引发空指针异常。

如果您可以在第31行发布WebEventListener.java的打印内容,那么我们就可以更好地检查问题。为此,请更改以下行:

public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) { 
  System.out.println("Find happened on " + arg1 + " Using method " + arg0); 
} 
 类似资料:
  • 直到昨天,代码都运行得很好。现在,当我尝试运行任何测试用例时,Selenium(使用Java)会在主页本身抛出java.lang.NullPointerException。下面是一个由于错误而失败的简单测试用例。 下面是我的测试类,它调用TestBase类的构造函数,然后初始化驱动程序对象。当控件进入<code>主页时。单击SearchLink()方法,测试结束,错误出现。 下面是我的TestBa

  • 我有一些jQuery,可以将定义列表转换为可扩展/可折叠的常见问题列表。 我在整个网站上有几个常见问题的链接,点击它们会将您发送到常见问题页面并展开相关问题,问题是一些常见问题的答案有指向其他问题的链接,而散列链接会跳到相关问题,但不会展开答案。 这是因为jQuery位于$(文档)中。就绪(function(),因此代码仅在页面重新加载后激活?是否需要触发重新加载? CHeers 有关完整代码,请

  • 设置按钮-datatoggle不会更改,默认情况下,aria扩展='False'。 单击页面中的任何元素时,aria epxanded值将从False变为True。但在此之前,此按钮不起作用。 有什么帮助吗?

  • 这是我的问题。 我有一个像这样的简单表格(示例): null null 并且我正在尝试列的名称,同时单击元素。 我想这可能是一个简单的解决办法但我找不到。 提前致谢

  • 我试图点击以下按钮使用xpath在selenium, 我试过下面的代码, 我得到以下错误, 组织。openqa。硒。StaleElementReferenceException:stale元素引用:元素未附加到页面文档 我想我之所以面临这个问题,是因为它是作为一个div而不是按钮封闭的。

  • 问题内容: 我有以下HTML: 我下面的单击“ Google搜索”按钮的代码在WebDriver中使用Java时效果很好。 我想将JavaScript与WebDriver一起使用以单击按钮。我该怎么做? 问题答案: 通过JavaScript执行点击具有一些您应该注意的行为。例如,如果绑定到元素事件的代码调用,则可能会发现Selenium代码挂起,具体取决于浏览器驱动程序的实现。也就是说,您可以使用