100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 高效易懂 打造维护性好的Web自动化测试框架PO模式精讲

高效易懂 打造维护性好的Web自动化测试框架PO模式精讲

时间:2021-11-03 00:56:23

相关推荐

高效易懂 打造维护性好的Web自动化测试框架PO模式精讲

目录

前言:

一、 PO概述

二、PO何实现于Web框架素自动化测试重中之重。

1.为了保证易维护性和易读性,我们可以在项目中定义一个统一的库,用来存放所有的定位器类。

2.定义一个基础的类,该类用于针对PO的元素定位进行封装。

3.基础类之后,我们就可以定义具体的PO元素了。

总结:

前言:

随着SaaS、PaaS、IaaS等“云服务”在企业中广泛应用,企业的软件开发也日益向云平台迁移。而WEB应用程序是目前最广泛使用的应用程序之一。在WEB开发中,动框架为常态封装自动框架为重要。

一、 PO概述

随着SaaS、PaaS、IaaS等“云服务”在企业中广泛应用,企业的软件开发也日益向云平台迁移。而Web应用程序是目前最广泛使用的应用程序之一。在Web开发中,自动化测试框架成为常态,其中封装的自动化框架最为重要,这篇文章将介绍如何针对表现层的PO元素进行自动化定位。

Page Object模式是一种常用的自动化测试框架模式,目的是将Web页面抽象为一个对象,将业务流程功能尽量细分,避免冗余代码逻辑。同时,也为自动化测试提供了更好的可维护性、代码复用性。Page Object就是用来描述页面上的行为和数据,并封装为一个对象的。

在Page Object模式中,一个页面包含许多元素,如输入框、按钮、复选框等,我们把这些元素抽象为一个个组件,每个组件对应着页面中的一个元素。将用户在页面上的操作拆分为一个个组件,便于代码组织和代码复用。

由此可以看出,PageObject模式有两个核心点:

1.把页面上的每一个页面元素抽象出来,封装为一些方法(组件);

2.让测试用例去调用这些方法(组件),实现Web自动化测试。

二、PO何实现于Web框架素自动化测试重中之重。

在Selenium WebDriver中,元素定位有8种方式,分别是classname、css selector、id、link text、name、partial link text、tag name和xpath。

在进行页面元素自动定位时,需要考虑以下几个因素:

1.易维护性:代码逻辑精简,方便后期维护。

2.易读性:在写代码时,尽量保持代码的易读性,让代码可读性更好,便于后续修改。

3.鲁棒性:尽可能避免页面元素的变化带来的测试用例失败,降低维护成本。

基于这几个因素,我们可以封装一些方法来满足PO模式。具体步骤如下:

1.为了保证易维护性和易读性,我们可以在项目中定义一个统一的库,用来存放所有的定位器类。

例如:

class LoginPageLocators:

# 名称输入框定位器USERNAME_INPUT_LOC = ('id', 'username')# 密码输入框定位器PASSWORD_INPUT_LOC = ('id', 'password')# 登录按钮定位器LOGIN_BUTTON_LOC = ('xpath', '//*[@id="login-btn"]')

2.定义一个基础的类,该类用于针对PO的元素定位进行封装。

例如:

class BasePageElements:

locator = None # 元素定位器def __init__(self, driver: WebDriver):self.driver = driver # 初始化浏览器驱动self.element = Nonedef find(self, wait_time=5):"""元素查找"""WebDriverWait(self.driver, wait_time).until(EC.presence_of_element_located(self.locator))self.element = self.driver.find_element(*self.locator)return self.elementdef click(self):"""元素点击"""self.find().click()def send_keys(self, value):"""元素输入"""self.find().send_keys(value)def get_text(self):"""获取元素文本"""return self.find().text

3.基础类之后,我们就可以定义具体的PO元素了。

例如:

class UsernameInput(BasePageElements):locator = LoginPageLocators.USERNAME_INPUT_LOCclass PasswordInput(BasePageElements):locator = LoginPageLocators.PASSWORD_INPUT_LOCclass LoginButton(BasePageElements):locator = LoginPageLocators.LOGIN_BUTTON_LOC

在具体实现时,我们只需要在测试用例中引入这些类即可。

例如:

class TestLogin:

def setup_method(self):self.driver = webdriver.Chrome()self.driver.implicitly_wait(20)self.login_page = LoginPage(self.driver)self.login_page.open()def test_login(self):username_input = UsernameInput(self.driver)password_input = PasswordInput(self.driver)login_button = LoginButton(self.driver)username_input.send_keys('example')password_input.send_keys('password')login_button.click()

在上述代码中,我们先初始化驱动对象,然后实例化LoginPage对象,并打开登录页面。接着我们通过实例化一个元素对象,来使用自定义的方法进行定位和操作。完成登录操作后,我们可以在测试用例中进行断言,以判断登录模块的正确性。

总结:

在这篇文章中,我们对PO模式进行了简单的介绍,并针对PO元素的自动定位进行了封装。以此来满足易维护、易读、鲁棒的原则,提高Web自动化测试的可靠性和可维护性。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。