1.采用文本对象模型 进行编码
from time import sleep
class BasePage():
# 临时driver
# driver=webdriver.Chrom()
# 构造函数
def __init__(self,driver):
self.driver=driver
# 访问rul
def open(self,url):
self.driver.get(url)
# 元素定位
def locat(self,loc):
return self.driver.find_element(*loc)
# 输入
def input(self,loc,txt):
self.locat(loc).send_keys(txt)
# 点击
def click(self,loc):
self.locat(loc).click()
# 等待
def wait(self,txt):
sleep(txt)
业务层面实现:login页面
yaml文件中的内容 ,这里主要用到yaml了对应的属性名:
#test1
name:xum
pwd:21233
class loginPage(BasePage):
# 页面URL
url=''
# 页面核心元素 说明:第一属性代表 你用什么定位 第二个属性市改定位的选择器值
user=('name','account')
pwd=('name','pwd')
button=("xpath",'//button[text()=”登录“]')
def login(self,name,pwd):
self.open(self.url)
self.input(self.user,name)
self.input(self.pwd,pwd)
self.click(self.button)
# 通过yaml文件实现数据驱动
@dtt
class case(unittest.TestCase):
@classmethod
def setUpclass(cls):
cls.driver = webdriver.Chrome()
cls.lp = loginPage(cls.driver)
@file_data('../tes.yaml')
def test_01(self,name,pwd):
self.lp.login(name, pwd)
if __name__=="__main__":
unittest.main()
关联业务操作:index(注意变化,集成到unittest中已经用红色进行标识)
class IndexPage(BasePage):
url=""
index_puit=('link text','退出')
index_search=('id','search-input')
index_search_button=('id','ai_buttone')
def quit(self):
self.open(self.url)
self.click(self.index_puit)
def search(self,txt):
self.open(self.url)
self.input(self.index_search,txt)
self.click(self.index_search_button )
# 通过yaml文件实现数据驱动 还是要在unittest集成进来
@dtt
class case(unittest.TestCase):
@classmethod
def setUpclass(cls):
cls.driver = webdriver.Chrome()
cls.lp = loginPage(cls.driver)
cls.ip=IndexPage(cls.driver)
@file_data('../tes.yaml')
def test_01(self,name,pwd):
self.lp.login(name, pwd)
def test_02(self):
self.ip.search('手机')
if __name__=="__main__":
unittest.main()
根据以上 构思可以对测试内容进行大量添加!结构模式理解清楚
|