前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium PageObject设计模式

Selenium PageObject设计模式

作者头像
清风穆云
发布2021-08-09 11:15:54
2850
发布2021-08-09 11:15:54
举报
文章被收录于专栏:QA一隅

简介

Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例的可维护性。

实践案例

1.封装BasePage

BasePage.py

代码语言:javascript
复制
from  time import sleep

class Page():
    '''页面基础类'''

    #初始化
    def __init__(self, dirver):
        self.base_url = 'http://localhost'
        self.driver = dirver
        self.timeout = 30

    #打开不同的子页面
    def _open(self, url):
        url_ = self.base_url + url
        print("Test page is: %s" %url_)
        self.driver.maximize_window()
        self.driver.get(url_)
        sleep(2)
        assert self.driver.current_url == url_, 'Did ont land on %s' % url_

    def open(self):
        self._open(self.url)

    #元素定位方法封装
    def find_element(self,*loc):
        return self.driver.find_element(*loc)
2.封装Loginpage

LoginPage.py

代码语言:javascript
复制
from BasePage import *
from selenium.webdriver.common.by import By

class LoginPage(Page):
    '''首页登录页面'''

    url='/'

    #定位器
    username_loc=(By.NAME,'username')
    password_loc=(By.NAME,'password')
    submit_loc=(By.NAME,'Submit')

    #用户名输入框元素
    def type_username(self,username):
        self.find_element(*self.username_loc).clear()
        self.find_element(*self.username_loc).send_keys(username)

    #密码输入框元素
    def type_password(self,password):
        self.find_element(*self.password_loc).clear()
        self.find_element(*self.password_loc).send_keys(password)

    #登录按钮元素
    def type_submit(self):
        self.find_element(*self.submit_loc).click()

#登录功能模块封装
def test_user_login(driver,username,password):
    '''测试用户名密码是否可以登录'''

    login_page=LoginPage(driver)
    login_page.open()

    login_page.type_username(username)
    login_page.type_password(password)
    login_page.type_submit()
3.封装登录测试模块

loin_test.py

代码语言:javascript
复制
from LoginPage import *
from selenium import webdriver

driver=webdriver.Firefox()

username = '51zxw'
password = '123456'
test_user_login(driver, username, password)

sleep(3)
driver.quit()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 QA一隅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 实践案例
    • 1.封装BasePage
      • 2.封装Loginpage
        • 3.封装登录测试模块
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档