java - 使用页面工厂在 POM 中获取 java.lang.NullPointerException

标签 java selenium selenium-webdriver page-factory

我在下面发布了一些示例代码,到目前为止我已经完成了这些代码,但我遇到了异常 java.lang.NullPointerException

基类:

public class TestBase {
    public static WebDriver driver= null;

    @BeforeSuite
    public void initialize(){
        System.setProperty("webdriver.chrome.driver","...chromedriver_win32\\chromedriver.exe");
        WebDriver driver=new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get("abcd.com");
    }

    @AfterSuite
    public void TearDownTest()
    {
        TestBase.driver.quit();
    }
}

登录页面:

public class LoginPage {

    WebDriver driver;

    public LoginPage(WebDriver driver)
    {
        this.driver= driver;
    }

    @FindBy(how=How.XPATH, using="//*[@id='email_id']") WebElement EmailTextBox;
    @FindBy(how=How.XPATH, using="//*[@id='password']")WebElement PassworTextBox;
    @FindBy(how=How.XPATH, using="//*[@id='frm_login']/div[4]/input") WebElement LoginButton;

    public void setemail(String strmail)
    {
        EmailTextBox.sendKeys(strmail);
    }

    public void setpwd(String strpwd)
    {
        try
        {
            PassworTextBox.sendKeys(strpwd);
        }
        catch (TimeoutException e) 
        {
            System.out.println("Time out exception " + e);
        } 
        catch (ElementNotSelectableException e) {
            System.out.println("Element not selectable exception " + e);
        } catch (NoSuchElementException e) {
            System.out.println("No such element found " + e);
        } catch (ElementNotVisibleException e) {
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("Something Wrong " + e);
        }
    }

    public void ClickLoginBtn()
    {
        LoginButton.click();
    }
}

登录测试类:

public class LoginTest extends TestBase{

    @Test
    public void init()
    {
        System.out.println("In the init method");
        LoginPage lg=PageFactory.initElements(driver, LoginPage.class);
        lg.setpwd("123123");
        lg.setemail("abc@gmail.com");
        lg.ClickLoginBtn();
    }
}

我在设置用户名和密码时遇到了 NullPointerException。请你帮助我好吗?

我是使用 PageFactory 的 POM 的新手,所以我不知道如何解决它,但如果有人可以帮助我,那将对我有很大帮助。

最佳答案

您不应初始化 WebDriver 实例,即 driver,如下所示:

public static WebDriver driver= null;

WebDriver driver=new ChromeDriver();

保持全局声明为:

public static WebDriver driver= null;

并将行更改为:

driver=new ChromeDriver();

关于java - 使用页面工厂在 POM 中获取 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56769743/

相关文章:

java - 链表遍历不就是一路遍历吗?

python - Selenium / python : Find <label for =""> element with no other attributes

selenium - 屏幕分辨率会破坏 Selenium 测试吗?

java - 无法在 Selenium Webdriver Java 中找到 <figure> 标记内的元素

Java 类要求

java - JLayeredPane中的panel添加到JLayeredPane后编辑是否会发生变化?

java - 我想找到图像的xpath

ruby - 如何获取鼠标光标类型?

java - java 中缺少用户定义的数据类型

python - chromium-browser "--host-rules"选项不起作用?