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

获取java。POM UISSNG页面工厂中的lang.NullPointerException

葛越泽
2023-03-14

我在下面发布了一些到目前为止已经完成的示例代码,我得到了一个异常java.lang.NullPointerExc0019

基本类:

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();
    }
}

LoginTest类:

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新手,所以我不知道如何解决这个问题,但如果有人能帮我解决这个问题,那将对我大有帮助。

共有3个答案

微生恩
2023-03-14

我希望您已经像这样初始化了页面工厂元素

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

在你的测试课上,我会把

LoginPage lg=新的LoginPage(驱动程序);

Read more here:
https://www.seleniumeasy.com/selenium-tutorials/page-factory-pattern-in-selenium-webdriver
陶腾
2023-03-14

尝试在驱动程序之后添加超时。获取(“abcd.com”)确保页面已完成加载,并且可以找到定义EmailTextBox和PassworTextBox的WebElements
或者像这样使用WebDriverWait

new WebDriverWait(driver, 10))
   .until(ExpectedConditions.visibilityOf(By.id("someid")));
狄信然
2023-03-14

您不应按如下方式初始化WebDriver实例,即driver两次:

public static WebDriver driver= null;

WebDriver driver=new ChromeDriver();

保持全局声明为:

public static WebDriver driver= null;

并将该行引导为:

driver=new ChromeDriver();
 类似资料:
  • 对登录页面使用页面对象模型和页面分解,在登录页面中获取对象。java和操作在LoginScript中。JAVA我有一个java。“Ele_usernamedit.clear();”行中的lang.NullPointerException请帮助检查代码。谢谢 这是我的登录页。爪哇: 这是我的登录cript.java:

  • 页面工厂是Joomla灵活拖放页面的革命性产品。创建任何想要美化的布局都可以在最快的时间用页面工厂页面构建器完成。不管你是初学者还是专业人士,为你的客户、公司或你自己建立网站;完全控制你的Joomla网站,并开始建立具有惊人功能的独特网站。 页面工厂是最新发布的页面工厂系列。页面工厂是一个视觉站点建设的新时代。使用令人惊奇的前端站点构建界面,页面工厂为您提供了一分钟开发站点的实时体验。这个版本的页

  • 我正在创建页面对象模型和数据驱动程序框架。我正在为登录编写测试用例,但得到了pagefactory nullpointerexception。1.如何初始化我的驱动程序以避免此错误?2.再次说明如何在我的测试脚本中使用Screenshot page类,我在下面给出了代码。 失败:日志(“s@gmail.com“,”sw45“)java.lang.NullPointerException位于org.

  • 我有hooks.java用于驱动程序类,loginpage.java用于所有登录页面对象和步骤定义类。我的页面工厂对象没有在我的登录类中初始化,它返回null由于null驱动程序。具有@before标记的驱动程序类,它的initiate在除驱动程序之外的所有类之前为空。当我使用PageFactory.InitElements(driver、LoginPage.Class)时;在时间页工厂初始化的钩

  • 我遵循这里的POM指南 问题是当输入有效的用户/密码时,POM正在返回新的HomePage(驱动程序),新的HomePage构造函数正在通过传递的驱动程序验证我们实际上在“主页”页面上。自然,驱动程序被打开到登录页面,所以在主页上查找元素是徒劳的。POM方法应该如何将“PageFactory”主页对象实际“打开”返回到主页?

  • 我是一名新的测试工程师,一直在阅读页面对象模型并实现它们,并不断遇到页面工厂。我知道页面工厂是一个POM,它提供了额外的功能,例如在调用页面工厂时实例化所有元素,以及更可读的测试代码(尽管我不完全赞同可读性)。明确地说,我对POM很感兴趣。代码的可重用性和相对容易的维护非常好,我正在朝着这个方向努力。 我要回答的两个问题是: 为什么我要实例化所有元素,而不是动态地进行