0

我正在使用带有 selenium webdriver 和 testng 的页面对象模式。我想跨多个访问另一个类中的一个页面对象类的实例<test>

例如

 <test name="Login scenario">
    <classes>
        <class name="sanitytests.LoginTests">
         <methods>
            <include name="validLogin"/>
         </methods>
        </class>
    </classes>
</test> 

  <test name="scenario2" preserve-order="true" parallel="false">
            <classes>
                 <class name="sanitytests.HomePageTests">
                 <methods>
                    <include name="clickOnMyAccountFromHome"/>
                 </methods>
                </class>
            </classes>
  </test> 

在我的 LoginTests 类中,我正在使用 homePage 类的实例

@Test()
    public void validLogin(ITestContext context) throws Exception {

    loginPage.loginDetails(username,password);
    homePage = loginPage.loginAsValidUser();
    context.setAttribute("homePage",homePage);

    }

我的 HomePageTests 类

@Test()
    public void clickOnMyAccountFromHome(ITestContext context) throws Exception {
        homePage = (HomePage) context.getAttribute("homePage");
        myAccountPage = homePage.navigateToMyAccountPage();
        context.setAttribute("myAccountPage", myAccountPage);

    }

我得到空指针异常,因为ItestContext用于在方法之间而不是在测试之间共享参数。有没有其他选择?

4

2 回答 2

1

从我所读到的“ITestContext”中,它与TestNG 类/对象/方法有关。您可以将主页创建为静态的,它将可用于整个套件运行。

于 2013-09-12T07:12:29.083 回答
0

页面对象模式没有说明对象只能创建一次。在每个测试中创建新实例。

于 2013-09-13T07:29:17.327 回答