PageObject+unitetest框架的实现

PageObject+unittest框架

思想:UI层自动化测试前台页面的改变导致整个测试代码运行失败,测试脚本维护困难

解决办法:将页面元素和页面元素的操作单独封装,实现页面元素和页面元素操作和脚本的分离

框架的大致思路:
1.BasePage
基础页面模块,封装基础的方法和页面元素定位的方法

2.LoginPage
登录模块,包括了登录要操作的所有元素,登录的元素方法的封装

3.test_login
测试登录模块,引入了unittest模块,实现断言操作,验证登录的不同场景。
包括登录成功的场景,登录失败的场景

BasePage模块的代码如下:

#coding=utf-8
from  selenium import webdriver

class Page():
    def __init__(self,driver):
        self.driver=driver

    def open(self):
        self.driver.get("http://127.0.0.1:82/bugfree/bugfree3.0.4/index.php/site/login")

    def find_element(self,*loc):
        return self.driver.find_element(*loc)



if __name__ == '__main__':
     pass

Login_Page模块的代码如下:

#coding=utf-8
from  BasePage import Page
from  selenium.webdriver.common.by import By

class LoginPage(Page):
    username_loc=(By.ID,'LoginForm_username')
    password_loc=(By.ID,'LoginForm_password')
    submit_loc=(By.ID,'SubmitLoginBTN')
    null_password_loc=(By.ID,'login-error-div')
    pass_loc=(By.CLASS_NAME,'user-info')

    def type_username(self,username):
        self.find_element(*self.username_loc).send_keys(username)

    def type_password(self,password):
        self.find_element(*self.password_loc).send_keys(password)

    def  type_submit(self):
        self.find_element(*self.submit_loc).click()

    def  login_null_password(self):
        return  self.find_element(*self.null_password_loc).text

    def  login_pass(self):
        return  self.find_element(*self.pass_loc).text

    def  login_action(self,username,password):
        po=LoginPage(self.driver)
        po.open()
        po.type_username(username)
        po.type_password(password)
        po.type_submit()

test_login模块的代码如下:

#coding=utf-8
from LoginPage import *
from  selenium import webdriver
import unittest

class  T(unittest.TestCase):
    def  setUp(self):
        self.driver = webdriver.Firefox()
    def test_1(self):
        po=LoginPage(self.driver)
        po.login_action('admin',' ')
        self.assertEqual(po.login_null_password(),u'密码 不可为空白.  ')
    def test_2(self):
        po=LoginPage(self.driver)
        po.login_action('admin','123456')
        self.assertIn(u'欢迎',po.login_pass())

    def tearDown(self):
        self.driver.quit()
        
if __name__ == '__main__':
    unittest.main()














  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值