如何实施PageObject模式

tamoadmin 赛事报道 2024-04-27 31 0

如何实施PageObject模式

PageObject模式是一种在自动化测试中常用的设计模式,它的目的是为了提高测试代码的可读性和可维护性,减少代码的重复,并且降低页面元素变化对测试代码的影响。以下是实施PageObject模式的一些步骤和注意事项:

1.创建基础类(BasePage)

首先,我们需要创建一个基础类,这个类通常包含了页面导航、元素定位等公共方法和属性。在这个基础上,我们可以封装所有测试页面的公共方法,例如打开页面、定位元素等。这样做的好处是可以避免在每个页面类中重复编写这些代码。

```python

class

BasePage:

def

__init__(self,

driver,

base_url):

self.driver

=

driver

self.base_url

=

base_url

self.timeout

=

30

def

on_page(self):

return

self.driver.current_url

==

(self.base_url

+

self.url)

def

open(self,

url):

self.driver.get(self.base_url

+

url)

assert

self.on_page(),

'Did

not

land

on

%s'

%

url

```

2.定义页面层(LoginPage)

接下来,我们需要为每一个需要测试的页面创建一个类。这个类应该继承自基础类,并且封装该页面上的元素和操作方法。例如,如果我们正在测试一个登录页面,那么就应该创建一个`LoginPage`类,其中包含用于输入用户名和密码的元素定位器,以及用于提交登录的元素定位器。

```python

class

LoginPage(BasePage):

url

=

'/login'

username_loc

=

(By.NAME,

'email')

password_loc

=

(By.NAME,

'password')

submit_loc

=

(By.XPATH,

'//*[@id="dologin"]')

def

type_username(self,

username):

return

self.find_element(*self.username_loc).send_keys(username)

def

type_password(self,

password):

如何实施PageObject模式

return

self.find_element(*self.password_loc).send_keys(password)

def

type_submit(self):

return

self.find_element(*self.submit_loc).click()

```

3.在测试用例中使用PageObject

最后,我们在编写测试用例的时候,可以直接使用这些页面类的方法来操作页面元素。这样做可以让我们更专注于业务逻辑,而不是界面细节。

```python

def

test_user_login(driver,

username,

password):

如何实施PageObject模式

login_page

=

LoginPage(driver)

login_page.open()

login_page.type_username(username)

login_page.type_password(password)

login_page.type_submit()

```

以上就是实施PageObject模式的基本步骤。需要注意的是,我们应该尽量遵循一些最佳实践,例如公开的方法代表UI提供的功能,不要在方法中添加断言,以及不需要建模UI内的所有元素等。