码迷,mamicode.com
首页 > 其他好文 > 详细

UI对象库

时间:2018-01-13 12:51:54      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:set   back   直接   hbox   tom   express   测试程序   arc   until   

能够使用配置文件存储被测试页面上页面元素的定位方式和定位表达式,做到定位数据和程序的分离。

1.页面元素定位表达式配置文件,“.ini”文件,可用text文本编辑保存后直接修改文件后缀

[sogou]
searchBox=id>query
searchButton=id>stb

2.ObjectMap工具类文件,供测试程序调用

#!usr/bin/env python  
#-*- coding:utf-8 -*-  
""" 
@author:   sleeping_cat
@Contact : zwy24zwy@163.com 
""" 
from selenium.webdriver.support.ui import WebDriverWait
import configparser#在python 3 中ConfigParser模块名已更名为configparser
import os

class ObjectMap(object):
    def __init__(self):
        self.uiObjMapPath = os.path.dirname(os.path.abspath(__file__))+"\\UiObjectMap.ini"
        print(self.uiObjMapPath)

    def getElementObject(self,driver,webSiteName,elementName):
        try:
            cf = configparser.ConfigParser()
            cf.read(self.uiObjMapPath)
            locators = cf.get(webSiteName,elementName).split(">")
            locatorMethod = locators[0]
            locatprExpression = locators[1]
            print(locatorMethod,locatprExpression)
            element = WebDriverWait(driver,10).                until(lambda x: x.find_element(locatorMethod,locatprExpression))
        except Exception as e:
            raise e
        else:
            return element

3.调用ObjectMap工具类实现测试逻辑

#!usr/bin/env python  
#-*- coding:utf-8 -*-  
""" 
@author:   sleeping_cat
@Contact : zwy24zwy@163.com 
""" 

from selenium import webdriver
import unittest,time,traceback
from ObjectMap import ObjectMap

class TestSoGouSearch(unittest.TestCase):
    def setUp(self):
        self.obj = ObjectMap()
        self.driver = webdriver.Firefox()

    def testSoGouSearch(self):
        url = http://www.sogou.com
        self.driver.get(url)
        try:
            searchBox = self.obj.getElementObject(self.driver,sogou,searchBox)
            searchBox.send_keys(WebDriver实战宝典)
            searchButton = self.obj.getElementObject(self.driver,sogou,searchButton)
            searchButton.click()
            time.sleep(3)
            self.assertTrue(吴晓华 in self.driver.page_source,assert error!)
        except Exception as e:
            print(traceback.print_exc())

    def tearDown(self):
        self.driver.quit()

if __name__ == __main__:
    unittest.main()

说明:

       实现了程序与数据分离,首先从UI对象库文件“xxx.ini”文件中取得需要操作的页面元素的定位方式,然后再ObjectMap类中取得该页面元素的实例对象,最后返回给测试用例方法中进行后续处理。

UI对象库

标签:set   back   直接   hbox   tom   express   测试程序   arc   until   

原文地址:https://www.cnblogs.com/sleeping-cat/p/8278518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!