POM模型的实际项目
在B站看了测码老师的视频,自己参照POM的模型做了一下自动化测试项目
base->base.py
1 from selenium.webdriver.common.keys import Keys 2 from selenium.webdriver.common.action_chains import ActionChains 3 import time 4 from logs.logtest import loggingtest 5 6 log1=loggingtest() 7 8 class BasePage: 9 def __init__(self,driver): 10 log1.info('浏览器正常启动了') 11 self.driver=driver 12 13 def open(self,url): 14 log1.info('正常启动了{}'.format(url)) 15 # / 将Html地址get到selenium驱动打开的浏览器中并且打开这个地址 16 self.driver.get(self.url) 17 18 def locator(self,loc): 19 return self.driver.find_element(*loc) 20 21 #send_keys用于模拟用户的键盘输入 22 def input_(self,loc,txt): 23 log1.info('打开了{}元素,输入{}字符'.format(loc,txt)) 24 self.locator(loc).send_keys(txt) 25 26 #使用click方法用于模拟用户的鼠标点击事件 27 def click_(self,loc): 28 self.locator(loc).click() 29 30 # clear用于清除文本框 31 def clear_(self,loc): 32 self.locator(loc).clear() 33 34 #获取该元素的文本值 35 def text_(self,loc): 36 textstr=self.locator(loc).text 37 return textstr 38 39 #模拟键盘ENTER键来输入 40 def enter_(self,loc): 41 self.locator(loc).send_keys(Keys.ENTER) 42 43 def down_(self,loc): 44 self.locator(loc).send_keys(Keys.DOWN) 45 46 #界面是由于iframe进行嵌套,所以使用switchTo方法切换到新打开的iframe页面中,新iframe页面id在元素中自己查找 47 def frame_(self,id): 48 self.driver.switch_to.frame(id) 49 50 #切换到主页面 51 def toframe_(self): 52 self.driver.switch_to_default_content() 53 54 def quit(self): 55 self.driver.quit() 56 57 #直接调用javascript代码 58 def script_(self,methodname): 59 self.driver.execute_script(methodname) 60 61 #鼠标滚动到页面底部 62 def rool_(self): 63 # for i in range(5): 64 self.driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') 65 ActionChains(self.driver).key_down(Keys.DOWN).perform() 66 time.sleep(5)
page_object->
1 ''' 2 登录 3 ''' 4 from selenium import webdriver 5 from selenium.webdriver.common.by import By 6 7 from base.base import BasePage 8 9 class LoginPage(BasePage): 10 #访问url 11 url='https://oatest.jsp' 12 #页面元素,地址打开 13 # 使用By.id或By.NAME的方式获取页面元素id或name的值来定位该页面元素 14 # 使用By.className的方式获取页面div元素的class样式值来定位数据 15 #使用By.XPATH的方式获取页面元素 16 user=(By.NAME,'userId') 17 pwd=(By.NAME,'password') 18 button=(By.XPATH,'//*[@id="form1"]/div[3]/div') 19 20 # text方法来获取该元素的文本值 21 error=(By.XPATH,"//*[@id='error']") 22 # print(error) 23 24 #元素的操作流 25 def login(self,username,password): 26 #访问url 27 self.open(self.url) 28 self.input_(self.user, username) 29 self.input_(self.pwd, password) 30 self.click_(self.button) 31 # textstr=self.text_(self.error) 32 # if (textstr.find("密码错误") != -1): #用find()或者index()两种方法都可以 33 # self.clear_(self.user) 34 # self.input_(self.user, "009410") 35 # self.clear_(self.pwd) 36 # self.input_(self.pwd, "000000") 37 # self.click_(self.button) 38 39 # if __name__ == '__main__': 40 # driver=webdriver.Chrome() 41 # user='009410' 42 # pwd='000019' 43 # lp=LoginPage(driver) 44 # lp.login(user,pwd)
test_cases
1 import unittest 2 from selenium import webdriver 3 from page_object.login_page import LoginPage 4 from page_object.officeSupplies import OfficeSupplies 5 from page_object.consignmentsales import ConsignmentSales 6 from ddt import ddt, file_data 7 8 9 # @ddt 10 class Cases(unittest.TestCase): 11 @classmethod 12 def setUpClass(cls) -> None: 13 # 加载driver驱动,使得newChromeDriver()对象能正常被调用 14 # 获取chrome驱动并正确打开浏览器 15 cls.driver = webdriver.Chrome() 16 cls.driver.maximize_window() 17 cls.lp = LoginPage(cls.driver) 18 cls.ospage = OfficeSupplies(cls.driver) 19 cls.cost = ConsignmentSales(cls.driver) 20 21 @classmethod 22 def tearDown(cls) -> None: 23 cls.driver.quit() 24 25 # @file_data('../data/testdata.yaml') 26 def test_01(self): 27 #登录流程 28 user = '009410' 29 pwd = '000000' 30 # self.lp.login(kwargs['user'], kwargs['pwd']) 31 self.lp.login(user, pwd) 32 33 #办公用品领用流程 34 sreachstr = '笔' 35 # self.ospage.office_supplies(kwargs['sreachstr']) 36 self.ospage.office_supplies(sreachstr) 37 38 # #费用报销流程 39 # numbercount = '1' # 发票张数 40 # reqfuture1 = '出差报销差旅费用' # 费用事由 41 # self.cost.Consignment(numbercount, reqfuture1) 42 43 # def test_02(self): 44 # #登录流程 45 # user = '008884' 46 # pwd = '000000' 47 # # self.lp.login(kwargs['user'], kwargs['pwd']) 48 # self.lp.login(user, pwd) 49 # 50 # # #办公用品领用流程 51 # # sreachstr = '笔' 52 # # # self.ospage.office_supplies(kwargs['sreachstr']) 53 # # self.ospage.office_supplies(sreachstr) 54 # 55 # #费用报销流程 56 # numbercount = '1' # 发票张数 57 # reqfuture1 = '出差报销差旅费用' # 费用事由 58 # self.cost.Consignment(numbercount, reqfuture1) 59 60 if __name__ == '__main__': 61 unittest.main()
浙公网安备 33010602011771号