selenium小白学习笔记(8) - Page Object设计模式

Page Object简介

Page Object设计模式的思想是,将元素定位与元素操作分层。当元素发生改变时,只需要维护元素定位层的代码,而无需关心都有哪些用例使用了这个元素。
这一节对于工作中要写测试代码的人来说很重要。我们最好在开始编写测试代码之前,就要为将来方便的进行代码维护做准备。

脚本例子

元素定位模块,命名为BaiduPage:

from selenium import webdriver

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

    def open(self):
        self.driver.get("https://www.baidu.com/")

    def search_input(self,keys):
        self.driver.find_element_by_id("kw").clear()
        self.driver.find_element_by_id("kw").send_keys(keys)

    def search_click(self):
        self.driver.find_element_by_id("su").click()

    def link_news(self):
        self.driver.find_element_by_link_text("新闻").click()

    def link_hao123(self):
        self.driver.find_element_by_link_text("hao123").click()

元素操作模块,命名为TestBaidu:

import unittest
import time
from BaiduPage import BaiduPage
from selenium import webdriver

class TestBaidu(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.driver=webdriver.Chrome()
        cls.mypage=BaiduPage(cls.driver)

    def setUp(self):
        self.mypage.open()
        time.sleep(3)

    def test_1_search(self):        
        self.mypage.search_input("page object")
        self.mypage.search_click()

    def test_2_news(self):
        self.mypage.link_news()

    def test_3_hao123(self):
        self.mypage.link_hao123()

    def tearDown(self):
        time.sleep(3)

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

if __name__=="__main__":
    unittest.main()
        

脚本说明

例子中将测试代码分为两部分,
第一部分为BaiduPage,对百度首页中包含的元素定位以及对元素的常用操作进行定义。
第二部分为TestBaidu,是主要的测试代码部分,当测试中需要对页面元素进行操作时,只需调用BaiduPage中的方法即可。

一些随想

1、由于在学习阶段,所以写的例子都是很短的。当真正测试的时候,测试代码必然很多,这时一个好的设计模式的优势会体现出来。
2、我记得有一本书上写到,在估算自动化测试所需要的时间人力等成本时,不但要考虑自动化测试脚本编写和执行的时间,也要考虑后期测试脚本维护的时间成本,因为测试脚本必然不是执行一次就不再使用了,而是需要不断的维护的。代码写的不够好,如果是自己维护还勉强,虽然改的时候很繁琐,但知道那是当初自己给自己造出来的麻烦。但如果是别人来维护,可千万别让人家有想揍你的冲动。哈哈哈。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值