我正在使用带有PageObject模型的Selenium的Testng。在java文件中,我有多个@Test方法 -
@Test( groups={"regression"},description="used to navigate", priority=206)
public void navigateToRegister() {
loginFrameMethods = PageFactory.initElements(driver, LoginFrameObjects.class);
loginFrameMethods.clickAccountButton();
loginFrameMethods.verifyTextPresence();// Asserts are done here
loginFrameMethods.fillSignUpPhoneNumber("1234567890");
loginFrameMethods.clickSignupContinueButton();
loginFrameMethods.verifyResult(); // Asserts are done here
}
@Test(){
//Other Validations
// Asserts May be done here also at the @Test Level
}
现在我想知道什么是好的做法 - 在PageFactory Class(在本例中为LoginFrameMethods)中编写断言,因为这些方法也可以在其他测试流程中或在单独的TestLevel中重复使用。
如果答案是前一个,那么如何使用 SoftAssert ,因为它将要求所有PageFactory类访问相同的SoftAssert对象以调用 assertAll()方法。
答案 0 :(得分:0)
页面对象的理想实现并不建议在页面类中使用断言。您应该自定义类的方向。我想为特定视图/页面类的所有验证方法提供单独的包。我不确定你的框架结构,但如果情况要求我做一些与你的情况类似的事情,我宁愿做一些如下的事情:
org.xyz.example.views
----LoginFramePage.java
org.xyz.example
----VerifyLoginFramePage.java
上面的包结构尝试建议,让每个视图都有两个包,一个包将包含页面方法,如login,logout和second class(Verify * .java)将包含该特定视图的所有断言方法。