我们使用selenium页面对象模式为每个页面构建模型。但是,为了实现一个业务功能,它将涉及几页。例如,创建一个用户,它涉及AgreementPage和CreateUserPage,如下所示
agreementPage = AgreementPage()
creatUserPage = agreementPae.accept()
createUserPage.typeEmail("your email address")
createUserPage.submit()
在我们的测试中,许多测试用例需要为前提条件创建一个用户。为了重用这些代码,我们制作了一个新的服务层。我们将代码移动到UserService.CreateUser()中。然后我们的测试脚本变为
def test_create_user():
userService.CreateUser("email address")
#do assertion
def test_edit_user():
authenticationService.login("user name", "password")
userService.CreateUser("email addrss")
#do editing created user
def test_delete_user():
authenticationService.login("user name", "password")
userService.CreateUser("email addrss")
#do deleting created user
由于大多数功能涉及两个或更多页面,因此页面对象进入服务层。在测试脚本层中,似乎我们正在测试服务。但我们认为服务名称不友好而不是与域语言交谈。
我认为这是进行自动化测试的常用方法,对吧?如何命名服务层或如何处理重新生成页面对象?
答案 0 :(得分:0)
我们也使用页面对象模型作为框架工作,它很棒。重新生成页面的一种方法是在页面中创建一个方法,每次返回装饰页面。在调用/使用页面中的任何其他对象之前调用方法。这应该可以解决问题。让我举几个登录页面的例子。
public class LoginPage{
public LoginPage getLoginPage(){
PageObject.initElements(yourDriverObject, LoginPage.class);
}
public void doLogin(){
//Code to login
}
Test class
public class testLogin{
new LoginPage.getLoginPage().doLogin();
}