【发布时间】:2020-02-07 10:46:22
【问题描述】:
我正在使用页面对象模型自动化我的项目。但是我注意到,每当我为同一个页面对象编写两个不同的场景以实现自动化时,每次使用 Pagefactory.initElements 方法编写测试用例时,我都需要为该测试用例初始化元素。有什么办法可以只初始化一次并且可以在所有测试用例中重用?
我试图制作参考变量,例如“manorgpom ort=PageFactory.initElements(getdriver(), manorgpom.class);” ort 是静态的,但它给出了空指针异常。我在测试用例之外对它们进行了初始化,并将引用变量设为静态但没有成功。
@Test(priority=3)
public void orgact() throws Exception {
manorgpom ort=PageFactory.initElements(getdriver(), manorgpom.class);
getdriver().manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
ort.actorg();
Thread.sleep(5000);
}
@Test(priority=4)
public void orgadd() throws Exception{
manorgpom ort=PageFactory.initElements(getdriver(), manorgpom.class);
getdriver().manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
ort.addorg();
Thread.sleep(10000);
}
如果您在上面看到,我每次编写测试用例时都需要初始化 Web 元素。每次我需要提到“manorgpom ort=PageFactory.initElements(getdriver(), manorgpom.class);”。我想优化这个。
这是 manageorgpom 类 sn-p。
public class manorgpom extends Basetest{
@FindBy(xpath="//*[@href='/organization']")
WebElement orglink;
@FindBy(xpath="//*[@class='anticon anticon-filter']")
WebElement filter;
@FindBy(xpath="//*[@placeholder='e.g. High School USA']")
WebElement filternametxt;
@FindBy(xpath="//*[text()='Activate']")
WebElement activatelink;
@FindBy(xpath="//*[@placeholder='e.g. Johnny']")
WebElement contactfirstname;
当我将 ort 引用变量设为静态时,每次运行套件时都会收到 java.lang.nullPointerException。请帮帮我。
【问题讨论】:
-
在页面类构造函数中添加 PageFactory.initElements 可能会有所帮助。你能提供更多细节吗?
-
正是您需要的?能详细点吗?
-
您是否尝试过初始化元素和页面对象级别?你能分享你的页面对象类详细信息吗
-
我在声明所有网络元素的地方添加了 sn-p。
-
您的 getdriver() 是否每次都创建新的驱动程序对象?
标签: selenium-webdriver testng-eclipse page-factory