0

我们使用 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

因为大多数功能涉及两个或更多页面,所以页面对象进入服务层。在测试脚本层,我们似乎在测试服务。但我们确实认为服务名称不友好,不喜欢与域语言交谈。

我认为这是进行自动化测试的非常常见的方法,对吧?您如何命名服务层或如何处理继续使用的页面对象?

4

1 回答 1

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();

}
于 2013-07-21T16:54:42.713 回答