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)
View Code

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)
View Code

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()
View Code

 

posted on 2021-08-10 17:15  橙子HQ  阅读(77)  评论(0)    收藏  举报