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

无法使用selenium和页面工厂在页面对象类中调用“org.openqa.selenium.WebDriver.getTitle()”

南宫海超
2023-03-14

创建基类:

public loginpage() {           
    PageFactory.initElements(driver,this);
}

然后初始化页面对象:

public String GetTitle() {
    System.out.println("title111");
    return driver.getTitle();

然后创建测试用例:

@Test
    public void title() {
    String a=   lp.GetTitle();
    System.out.println(a);
    }

输出:

java.lang.NullPointerException: Cannot invoke "org.openqa.selenium.WebDriver.getTitle()" because "this.driver" is null

请告诉我怎么了。

共有1个答案

拓拔烨赫
2023-03-14

要使用在测试用例或浏览器工厂中创建的相同浏览器,需要重用。

因此,在页面对象中,首先您需要:

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

然后:

public String GetTitle() {
    System.out.println("title111");
    return driver.getTitle();
}

您可以在以下内容中找到一些相关的详细讨论:

  • 使用页面工厂设计和页面对象模型的测试使用Selenium和Java打开浏览器的两个实例
 类似资料:
  • 对登录页面使用页面对象模型和页面分解,在登录页面中获取对象。java和操作在LoginScript中。JAVA我有一个java。“Ele_usernamedit.clear();”行中的lang.NullPointerException请帮助检查代码。谢谢 这是我的登录页。爪哇: 这是我的登录cript.java:

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

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

  • 人们是如何做到这一点的? 谢谢

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

  • 我有一个关于selenium WebDriver中页面对象的问题。我们的站点非常动态,有很多ajax和各种身份验证状态。如何定义每个页面对象,但让我们假设我已经弄清楚了,并定义了代表我们站点的几个页面对象。 你如何处理从一页到另一页的交叉?因此,我得到一个页面对象用于我的主页,一个用于我的帐户页面,一个用于我的结果页面。然后我需要编写一个遍历我所有页面的测试来模拟一个用户执行多个动作。