我正在使用带有selenium webdriver和testng的Page对象模式。
我想在多个<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
用于在不在测试之间的方法之间共享参数。还有其他选择吗?
答案 0 :(得分:1)
根据我所读到的“ITestContext”,它与TestNG类/对象/方法有关。您可以将HomePage创建为静态,它将可用于整个套件运行。
答案 1 :(得分:0)
页面对象模式未声明对象只能创建一次。在每个测试中创建新实例。