30
31 # chrom driver
32 def chromeDriver(self):
33 “”"
34
35 :return:
36 “”"
37 try:
38 # option = webdriver.ChromeOptions()# 实现不打开浏览器 执行web自动化测试脚本
39 # option.add_argument(‘headless’)#
40 # self.driver = webdriver.Chrome(chrome_options=option)
41 self.driver = webdriver.Chrome()
42 except Exception as e:
43 log.logger.exception(‘ChromeDriverServer.exe executable needs to be in PATH. Please download!’,
44 exc_info=True)
45 raise e
46 else:
47 log.logger.info(‘%s:found the chrome driver [%s] successed !’ % (sys._getframe().f_code.co_name, self.driver))
48 return self.driver
49
50
51 # Ie driver
52 def ieDriver(self):
53 “”"
54
55 :return:
56 “”"
57 try:
58 self.driver = webdriver.Ie()
59 except Exception as e:
60 log.logger.exception(‘IEDriverServer.exe executable needs to be in PATH. Please download!’,
61 exc_info=True)
62 raise e
63 else:
64 log.logger.info(‘%s:found the IE driver [%s] successed !’ % (sys._getframe().f_code.co_name, self.driver))
65 return self.driver
66
67
68 if name == ‘main’:
69 WDrive=WDriver()
70 WDrive.fireFoxDriver()
myunittest.py
1 ‘’’
2 Code description:unittest framwork
3 Create time:
4 Developer:
5 ‘’’
6
7 from retail.test_case.models.driver import WDriver
8 import logging
9 import unittest
10 from retail.test_case.page_obj.login_page import LoginPage
11 from retail.test_case.models.log import Logger
12 from selenium import webdriver
13
14 log = Logger(name, CmdLevel=logging.INFO, FileLevel=logging.INFO)
15 class MyunitTest(unittest.TestCase):
16 “”"
17
18 “”"
19
20 # add by xuechao at 2018.09.19
21 @classmethod
22 def setUpClass(cls): # 一个测试类(文件)执行一次打开浏览器, 节约每个用例打开一次浏览器的时间
23
24 #cls.driver = WDriver().fireFoxDriver()
25 cls.driver = WDriver().chromeDriver()
26 cls.driver.maximize_window()
27 log.logger.info(‘opened the browser successed!’)
28 # ----------------------------
29
30 def setUp(self):
31 “”"
32
33 :return:
34 “”"
35 self.login = LoginPage(self.driver)
36 self.login.open()
37 log.logger.info(‘starting run test cases’)
38
39 def tearDown(self):
40 “”"
41
42 :return:
43 “”"
44 self.driver.refresh()
45 log.logger.info(‘test case run completed’)
46
47 # add by linuxchao at 2018.09.19
48 @classmethod
49 def tearDownClass(cls):
50 cls.driver.quit()
51 log.logger.info(‘quit the browser success!’)
52 #----------------------------
53 if name == ‘main’:
54 unittest.main()
目前为止,我需要的所有的公共方法都编写完了, 后期再需要别的方法可以加,下面我们就开始编写我们的测试用例,由于我们使用的是PageObject模式,那么我们需要设计一个basepage页面,所有的页面或者说模块全部继承这个basepage,basepage主要编写所有页面的公共方法
1 ‘’’
2 Code description: base page 封装一些公共方法
3 Create time:
4 Developer:
5 ‘’’
6 from selenium.webdriver.support.wait import WebDriverWait
7 from selenium.webdriver.support import expected_conditions as EC
8 from selenium.webdriver.common.by import By
9 import os
10 import logging
11 import sys
12 from retail.test_case.models.log import Logger
13 from retail.config import conf
14 from retail.test_case.models.doexcel import ReadExcel
15
16 eleData = ReadExcel() # 存储系统所有的元素数据
17 testLoginData = ReadExcel(‘elementDate.xlsx’, ‘userNamePw’) # 登录模块测试数据
18 modifyPwData = ReadExcel(‘elementDate.xlsx’, ‘modifyPw’) # 修改密码模块测试数据
19 queryData = ReadExcel(‘elementDate.xlsx’, ‘queryData’)
20 log = Logger(name, CmdLevel=logging.INFO, FileLevel=logging.INFO)
21
22 class BasePage(object):
23
24 “”“主菜单”“”
25 menuList =
26 [(By.LINK_TEXT, eleData.readExcel(7, 3)), # 权限管理
27 (By.LINK_TEXT, eleData.readExcel(8, 3)), # 会员档案
28 (By.LINK_TEXT, eleData.readExcel(9, 3)), # 积分消费查询
29 (By.LINK_TEXT, eleData.readExcel(10, 3)), # 功能演示
30 (By.LINK_TEXT, eleData.readExcel(11, 3)), # 待办工作
31 (By.LINK_TEXT, eleData.readExcel(12, 3)), # 报表
32 (By.LINK_TEXT, eleData.readExcel(13, 3)), # 积分规则/活动查询
33 (By.LINK_TEXT, eleData.readExcel(14, 3))] # 积分规则/活动申请
34
35 def init(self, driver,url=‘http://11.11.164.134:9081/rmms/modules/ep.rmms.portal/login/login.jsp’):
36 “”"
37
38 :param driver:
39 :param url:
40 “”"
41 self.driver = driver
42 self.base_url = url
43 def _open(self,url):
44 “”"
45
46 :param url:
47 :return:
48 “”"
49 try:
50 self.driver.get(url)
51 self.driver.implicitly_wait(10)
52 except Exception as e:
53 log.logger.exception(e, exc_info=True)
54 raise ValueError(‘%s address access error, please check!’ %url)
55 else:
56 log.logger.info(‘%s is accessing address %s at line[46]’ %(sys._getframe().f_code.co_name,url))
57
58 def open(self):
59 “”"
60
61 :return:
62 “”"
63
64 self.open(self.base_url)
65 log.logger.info(‘%s loading successed!’ %self.base_url)
66 return self.base_url
67
68 # *loc 代表任意数量的位置参数
69 def findElement(self, *loc):
70 “”"
71 查找单一元素
72 :param loc:
73 :return:
74 “”"
75 try:
76 WebDriverWait(self.driver,10).until(EC.visibility_of_element_located(loc))
77 # log.logger.info(‘The page of %s had already find the element %s’%(self,loc))
78 # return self.driver.find_element(*loc)
79 except Exception as e:
80 log.logger.exception(‘finding element timeout!, details’ ,exc_info=True)
81 raise e
82 else:
83 log.logger.info(‘The page of %s had already find the element %s’ % (self, loc))
84 return self.driver.find_element(*loc)
85
86 def findElements(self, *loc):
87 “”"
88 查找一组元素
89 :param loc:
90 :return:
91 “”"
92 try:
93 WebDriverWait(self.driver,10).until(EC.visibility_of_element_located(loc))
94 # log.logger.info(‘The page of %s had already find the element %s’ % (self, loc))
95 # return self.driver.find_elements(*loc)
96 except Exception as e:
97 log.logger.exception(‘finding element timeout!, details’, exc_info=True)
98 raise e
99 else:
100 log.logger.info(‘The page of %s had already find the element %s’ % (self, loc))
101 return self.driver.find_elements(*loc)
102
103 def inputValue(self, inputBox, value):
104 “”"
105 后期修改其他页面直接调用这个函数
106 :param inputBox:
107 :param value:
108 :return:
109 “”"
110 inputB = self.findElement(*inputBox)
111 try:
112 inputB.clear()
113 inputB.send_keys(value)
114 except Exception as e:
115 log.logger.exception(‘typing value error!’, exc_info=True)
116 raise e
117 else:
118 log.logger.info(‘inputValue:[%s] is receiveing value [%s]’ % (inputBox, value))
119
120 # 获取元素数据
121 def getValue(self, *loc):
122 “”"
123
124 :param loc:
125 :return:
126 “”"
127 element = self.findElement(*loc)
128 try:
129 value = element.text
130 #return value
131 except Exception:
132 #element = self.find_element_re(*loc) # 2018.09.21 for log
133 value = element.get_attribute(‘value’)
134 log.logger.info(‘reading the element [%s] value [%s]’ % (loc, value))
135 return value
136 except:
137 log.logger.exception(‘read value failed’, exc_info=True)
138 raise Exception
139 else:
140 log.logger.info(‘reading the element [%s] value [%s]’ % (loc,value))
141 return value
142
143 def getValues(self, *loc):
144 “”"
145
146 :param loc:
147 :return:
148 “”"
149 value_list = []
150 try:
151 for element in self.findElements(*loc):
152 value = element.text
153 value_list.append(value)
154 except Exception as e:
155 log.logger.exception(‘read value failed’, exc_info=True)
156 raise e
157 else:
158 log.logger.info(‘reading the element [%s] value [%s]’% (loc,value_list))
159 return value_list
160
161 # 执行js脚本
162 def jScript(self,src):
163 “”"
164
165 :param src:
166 :return:
167 “”"
168 try:
169 self.driver.excute_script(src)
170 except Exception as e:
171 log.logger.exception(‘execute js script [%s] failed ’ %src)
172 raise e
173 else:
174 log.logger.info(‘execute js script [%s] successed ’ %src)
175
176
177 # 判断元素是否存在
178 def isElementExist(self, element):
179 “”"
180
181 :param element:
182 :return:
183 “”"
184 try:
185 WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(element))
186 except:
187 # log.logger.exception(‘The element [%s] not exist’, exc_info=True)
188 return False
189 else:
190 # log.logger.info(‘The element [%s] have existed!’ %element)
191 return True
192 # 截图
193 def saveScreenShot(self, filename):
194 “”"
195
196 :param filename:
197 :return:
198 “”"
199 list_value = []
200
201 list = filename.split(’.’)
202 for value in list:
203 list_value.append(value)
204 if list_value[1] == ‘png’ or list_value[1] == ‘jpg’ or list_value[1] == ‘PNG’ or list_value[1] == ‘JPG’:
205 if ‘fail’ in list_value[0].split(''):
206 try:
207 self.driver.save_screenshot(os.path.join(conf.failImagePath, filename))
208 except Exception:
209 log.logger.exception(‘save screenshot failed !’, exc_info=True)
210 else:
211 log.logger.info(‘the file [%s] save screenshot successed under [%s]’ % (filename, conf.failImagePath))
212 elif ‘pass’ in list_value[0]:
213 try:
214 self.driver.save_screenshot(os.path.join(conf.passImagePath, filename))
215 except Exception:
216 log.logger.exception(‘save screenshot failed !’, exc_info=True)
217 else:
218 log.logger.info(
219 ‘the file [%s] save screenshot successed under [%s]’ % (filename, conf.passImagePath))
220 else:
221 log.logger.info(‘save screenshot failed due to [%s] format incorrect’ %filename)
222 else:
223 log.logger.info(‘the file name of [%s] format incorrect cause save screenshot failed, please check!’ % filename)
224
225 # 接受错误提示框
226 def accept(self, *loc):
227 “”"
228
229 :return:
230 “”"
231 self.findElement(*loc).click()
232 log.logger.info(‘closed the error information fram successed!’)
233
234 if name == ‘main’:
235 pass
#### **登录页面**
1 ‘’’
2 Code description: login page
3 Create time:
4 Developer:
5 ‘’’
6
7 from selenium.webdriver.common.by import By
8 import logging
9 import sys
10 from retail.test_case.page_obj.base_page import BasePage, eleData, testLoginData
11 from retail.test_case.models.log import Logger
12
13 log = Logger(name, CmdLevel=logging.INFO, FileLevel=logging.INFO)
14
15
16 class LoginPage(BasePage):
17
18 “”“用户名,密码,登录按钮,保存信息,错误提示”“”
19 userNameEle = (By.ID, eleData.readExcel(1, 3))
20 passWordEle = (By.ID, eleData.readExcel(2, 3))
21 loginBtnEle = (By.ID, eleData.readExcel(3, 3))
22 saveInfoEle = (By.NAME, eleData.readExcel(4, 3))
23 errorMessage = (By.ID, eleData.readExcel(5, 3))
24 quitBtn = (By.ID, eleData.readExcel(6, 3))
25
26 # 用户名和密码
27 unpwData =
28 [[testLoginData.readExcel(1, 0), testLoginData.readExcel(1, 1)],# 正确的用户名和正确的密码
29 [testLoginData.readExcel(2, 0), testLoginData.readExcel(2, 1)],# 错误的用户名和正确的密码
30 [testLoginData.readExcel(3, 0), testLoginData.readExcel(3, 1)],# 空的用户名和正确的密码
31 [testLoginData.readExcel(4, 0), testLoginData.readExcel(4, 1)],# 错误的用户名和错误的密码
32 [testLoginData.readExcel(5, 0), testLoginData.readExcel(5, 1)],# 正确的用户名和空密码
33 [testLoginData.readExcel(6, 0), testLoginData.readExcel(6, 1)],# 正确的用户名和错误的密码
34 [testLoginData.readExcel(7, 0), testLoginData.readExcel(7, 1)]]# 空用户名和空密码
35
36
37 # 登录按钮
38 def clickLoginBtn(self):
39 “”"
40
41 :return:
42 “”"
43 element = self.findElement(*self.loginBtnEle)
44 element.click()
45 log.logger.info(‘%s ,logining…!’ % sys._getframe().f_code.co_name)
46 # 登录失败时提示
47 def getFailedText(self):
48 “”"
49
50 :return:
51 “”"
52 info = self.findElement(*self.errorMessage).text
53 log.logger.info(‘login failed : %s’ %info)
54 return info
55
56 # 登录失败时弹出的alert
57 def handleAlert(self):
58 “”"
59
60 :return:
61 “”"
62 try:
63 alert = self.driver.switch_to_alert()
64 text = alert.text
65 alert.accept()
66 except Exception:
67 log.logger.exception(‘handle alert failed, please check the details’ ,exc_info=True)
68 raise
69 else:
70 log.logger.info(‘login failed ,%s handle alert successed alert info: %s!’ %(sys._getframe().f_code.co_name, text))
71 return text
72
73 # 统一登录函数
74 def loginFunc(self, username=‘rmln’, password=‘qwert1234!@#’):
75 “”"
76 :param username:
77 :param password:
78 :return:
79 “”"
80 self.inputValue(self.userNameEle, username)
81 self.inputValue(self.passWordEle, password)
82 self.clickLoginBtn()
83
84 # 清空输入框数据
85 def clearValue(self, element):
86
87 empty = self.findElement(*element)
88 empty.clear()
89 log.logger.info(‘emptying value…’)
90
91
92 # 推出
93 def quit(self):
94 self.findElement(*self.quitBtn).click()
95 log.logger.info(‘quit’)
96
97 if name == ‘main’:
98 pass
#### 登录测试用例
1 “”"
2 Code description:login testcase
3 Create time:
4 Developer:
5 “”"
6
7 import unittest
8 import time
9 import logging
10 import sys
11 from retail.test_case.models.myunit import MyunitTest
12 from retail.test_case.models.log import Logger
13
14
15 log = Logger(name, CmdLevel=logging.INFO, FileLevel=logging.INFO)
16
17 class Login_TC(MyunitTest):
18
19 “”“登录模块测试用例”“”
20
21 def test_login_success_correct_username_password(self):
22 “”“用户名正确,密码正确,登录成功”“”
23 self.login.loginFunc()
24 currUrl = self.driver.current_url # 获取当前的url地址
25 try:
26 self.assertIn(‘main’, currUrl, ‘main not in current url!’)
27 except Exception:
28 self.login.saveScreenShot(‘correct_username_password_fail.png’)
29 raise
30 else:
31 self.login.saveScreenShot(‘correct_username_password_pass.png’)
32 log.logger.info(‘%s->run completed! please check the test report’ % (sys._getframe().f_code.co_name))
33
34 def test_login_failed_incorrect_username(self):
35 “”“用户名错误,密码正确,登录失败”“”
36
37 self.login.loginFunc(self.login.unpwData[1][0], self.login.unpwData[1][1])
38 failText = self.login.getFailedText()
39 self.assertEqual(‘输入的用户名或密码错误,请重新输入!’, failText, ‘提示信息错误’)
40 log.logger.info(‘%s->run completed! please check the test report’ % (sys._getframe().f_code.co_name))
41
42 def test_login_failed_incorrect_password(self):
43
44 “”“用户名正确,密码错误,登录失败”“”
45
46 self.login.loginFunc(self.login.unpwData[5][0], self.login.unpwData[5][1])
47 failText = self.login.getFailedText()
48 self.assertEqual(‘输入的用户名或密码错误,请重新输入!’, failText, ‘提示信息错误’)
49 log.logger.info(‘%s->run completed! please check the test report’ % (sys._getframe().f_code.co_name))
50
51 def test_login_failed_username_password_blank(self):
52 “”“用户名为空,密码为空,登录失败”“”
53
54 self.login.loginFunc(self.login.unpwData[6][0], self.login.unpwData[6][1])
55 failText = self.login.handleAlert() # 获取alert的提示信息
56 self.assertEqual(‘请填写用户名’, failText, ‘提示信息错误’)
57 log.logger.info(‘%s->run completed! please check the test report’ % (sys._getframe().f_code.co_name))
58
59 def test_login_failed_password_blank(self):
60 “”“用户名正确,密码为空,登录失败”“”
61
62 self.login.loginFunc(self.login.unpwData[4][0], self.login.unpwData[4][1])
63 failText = self.login.handleAlert() # 获取alert的提示信息
64 self.assertEqual(‘请填写用户密码’, failText, ‘提示信息错误’)
65 log.logger.info(‘%s->run completed! please check the test report’ % (sys._getframe().f_code.co_name))
66
67 def test_login_failed_unpw_incorrect(self):
68 “”“用户名错误,密码错误,登录失败”“”
69 # try:
70 self.login.loginFunc(self.login.unpwData[3][0], self.login.unpwData[4][0])
71 failText = self.login.getFailedText()
72 self.assertEqual (‘输入的用户名或密码错误,请重新输入!’, failText, ‘failed’)
73 log.logger.info(‘%s->run completed! please check the test report’ % (sys._getframe().f_code.co_name))
74
75 def test_login(self):
76 “”“循环测试登录功能”“”
77 for listitem in self.login.unpwData:
78 self.login.inputValue(self.login.userNameEle,listitem[0])
79 time.sleep(2)
80 self.login.inputValue(self.login.passWordEle,listitem[1])
81 time.sleep(2)
82 self.login.clickLoginBtn()
83 time.sleep(2)
84 if listitem[0] ‘rmln’ and listitem[1] == ‘qwert1234!@#’:
85 currUrl = self.driver.current_url
86 self.assertIn (‘main’ , currUrl)
87 self.login.quit()
88 elif listitem[0] == ‘rmln’ and listitem[1] != ‘qwert1234!@#’:
89 if listitem[1] == ‘’:
90 failText = self.login.handleAlert() # 获取alert的提示信息
91 self.assertEqual(‘请填写用户密码’, failText, ‘提示信息错误’)
92 else:
93 failText = self.login.getFailedText()
94 self.assertEqual(‘输入的用户名或密码错误,请重新输入!’, failText, ‘提示信息错误’)
95 elif listitem[0] != ‘rmln’ and listitem[1] == ‘qwert1234!@#’:
96 if listitem[0]‘’:
97 failText = self.login.handleAlert() # 获取alert的提示信息
98 self.assertEqual(‘请填写用户名’, failText, ‘提示信息错误’)
99 else:
100 failText = self.login.getFailedText()
101 self.assertEqual(‘输入的用户名或密码错误,请重新输入!’, failText, ‘提示信息错误’)
102 elif listitem[0] == listitem[1] == ‘’:
103 failText = self.login.handleAlert() # 获取alert的提示信息
104 self.assertEqual(‘请填写用户名’, failText, ‘提示信息错误’)
105 else:
106 failText = self.login.getFailedText()
107 self.assertEqual(‘输入的用户名或密码错误,请重新输入!’, failText, ‘提示信息错误’)
108 log.logger.info(‘%s->run completed! please check the test report’ % (sys._getframe().f_code.co_name))
109
110 if name == ‘main’:
111 unittest.main()
#### 修改密码页面
1 ‘’’
2 Code description:modify password page
3 Create time:
4 Developer:
5 ‘’’
6
7 import logging
8 import time
9 from selenium.webdriver.common.by import By
10 from selenium.webdriver.common.action_chains import ActionChains
11 from retail.test_case.page_obj.base_page import BasePage, eleData, modifyPwData
12 from retail.test_case.models.log import Logger
13
14 log = Logger(name, CmdLevel=logging.INFO, FileLevel=logging.INFO)
15 class PrimaryMenu(BasePage):
16
17 “”“密码数据”“”
18 pwdList =
19 [[modifyPwData.readExcel(1, 0), modifyPwData.readExcel(1, 1), modifyPwData.readExcel(1, 2)],
20 [modifyPwData.readExcel(2, 0), modifyPwData.readExcel(2, 1), modifyPwData.readExcel(2, 2)],
21 [modifyPwData.readExcel(3, 0), modifyPwData.readExcel(3, 1), modifyPwData.readExcel(3, 2)],
22 [modifyPwData.readExcel(4, 0), modifyPwData.readExcel(4, 1), modifyPwData.readExcel(4, 2)],
23 [modifyPwData.readExcel(5, 0), modifyPwData.readExcel(5, 1), modifyPwData.readExcel(5, 2)]]
24
25 “”“权限管理下拉菜单”“”
26 menuPersonal = (By.LINK_TEXT, eleData.readExcel(15, 3))
27 menuModifyPwd = (By.LINK_TEXT, eleData.readExcel(16, 3))
28
29 “”“密码修改”“”
30 oldPwd = (By.ID, eleData.readExcel(17, 3))
31 newPwd = (By.ID, eleData.readExcel(18, 3))
32 commitPwd = (By.ID, eleData.readExcel(19, 3))
33
34 “”“错误提示框及确定”“”
35 errMessage = (By.XPATH, eleData.readExcel(20, 3))
36 closeBtn = (By.CSS_SELECTOR, eleData.readExcel(21, 3))
37
38 “”“密码说明”“”
39 readMe = (By.ID, eleData.readExcel(22, 3))
40
41 “”“保存”“”
42 saveBtn = (By.XPATH, eleData.readExcel(23, 3))
43
44 # 主菜单
45 def findMenu(self,*menuList):
46 “”"
47
48 :param menu_list:
49 :return:
50 “”"
51 return self.findElement(*menuList)
52
53 # 旧密码输入框
54 def inputOldPw(self, oldPwd=‘’):
55 “”“”“”
56 try:
57 self.findElement(*self.oldPwd).clear()
58 self.findElement(*self.oldPwd).send_keys(oldPwd)
59 except Exception:
60 log.logger.exception(‘input Pw [%s] for oldPw [%s] fail’ %(oldPwd, self.oldPwd))
61 raise
62 else:
63 log.logger.info(‘inputing Pw [%s] for oldPw [%s] ’ % (oldPwd, self.oldPwd))
64 # 新密码输入框
65 def inputNewPw(self, newPwd=’‘):
66 “”"
67
68 :param newPwd:
69 :return:
70 “”"
71 try:
72 self.findElement(*self.newPwd).clear()
73 self.findElement(*self.newPwd).send_keys(newPwd)
74 except Exception:
75 log.logger.exception(‘input Pw [%s] for newPw [%s] fail’ % (newPwd, self.newPwd))
76 raise
77 else:
78 log.logger.info(‘inputing Pw [%s] for newPw [%s] ’ % (newPwd, self.newPwd))
79 # 确认密码输入框
80 def inputConfirmPw(self, confirmPwd=’’):
81 “”"
82
83 :param confirmPwd:
84 :return:
85 “”"
86 try:
87 self.findElement(*self.commitPwd).clear()
88 self.findElement(*self.commitPwd).send_keys(confirmPwd)
89 except Exception:
90 log.logger.exception(‘input Pw [%s] for commitPw [%s] fail’ %(confirmPwd, self.commitPwd))
91 raise
92 else:
93 log.logger.info('inputing Pw [%s] for commitPw [%s] ’ %(confirmPwd, self.commitPwd))
94 # 保存
95 def saveButton(self):
96 “”"
97
98 :return:
99 “”"
100 try:
101 self.driver.implicitly_wait(5)
102 clickbutton = self.findElement(*self.saveBtn)
103 time.sleep(1)
104 clickbutton.click()
105 except Exception:
106 log.logger.exception(‘click save button fail’)
107 raise
108 else:
109 log.logger.info(‘clciking the button’)
110
111 # 修改密码功能菜单
112 def modifyPwMenu(self):
113 “”"
114
115 :return:
116 “”"
117 try:
118 self.findElement(*self.menuList[0]).click()
119 self.findElement(*self.menuPersonal).click()
120 self.findElement(*self.menuModifyPwd).click()
121 except Exception:
122 log.logger.exception(‘not found menu [%s]-[%s]-[%s]’ %(self.menuList[0], self.menuPersonal, self.menuModifyPwd))
123 raise
124 else:
125 log.logger.info(‘finding menu [%s]-[%s]-[%s]’ %(self.menuList[0], self.menuPersonal, self.menuModifyPwd))
126 self.driver.implicitly_wait(2)
127
128 # 修改密码
129 def modifyPw(self, list):
130 “”"
131
132 :param list:
133 :return:
134 “”"
135 try:
136 self.inputOldPw(list[0])
137 self.inputNewPw(list[1])
138 self.inputConfirmPw(list[2])
139 self.saveButton()
140 except Exception:
141 log.logger.exception(‘input oldpw/newpw/commitpw [%s]/[%s]/[%s] fail’ %(list[0], list[1], list[2]))
142 raise
143 else:
144 log.logger.info(‘modifing pw [%s]/[%s]/[%s]’ %(list[0], list[1], list[2]))
145
146 # 错误提示框
147 def errorDialog(self, commit_btn = (By.ID,‘unieap_form_Button_1_unieap_input’)):
148 “”"
149 :type commit_btn: 元祖
150 “”"
151
152 try:
153 messages_frame = self.findElement(*self.errMessage)
154 text = messages_frame.text
155 element = self.findElement(*commit_btn)
156 time.sleep(2)
157 action = ActionChains(self.driver)
158 action.move_to_element(element).perform()
159 time.sleep(2)
160 element.click()
161 action.reset_actions() # 释放鼠标
162 except Exception:
163 log.logger.exception(‘close errMsgFram [%s] or get text [%s]fail’ %(self.errMessage))
164 raise
165 else:
166 log.logger.info(‘close errMsgFram [%s] and get text [%s] success’ %(self.errMessage, text))
167 return text
168
169 # 关闭提示框
170 def closeErrMsg(self, element):
171 try:
172 ele = self.findElement(*element)
173 action = ActionChains(self.driver)
174 action.move_to_element(ele).perform()
175 time.sleep(2)
176 ele.click()
177 action.reset_actions()
178 except Exception:
179 log.logger.exception(‘close the err msg ifram fail’, exc_info=True)
180 raise
181 else:
182 log.logger.info(‘closing the err msg ifram success!’)
183
184 if name == ‘main’:
185 pass
#### 修改密码测试用例
1 ‘’’
2 Code description:权限管理/个人设置/密码修改 testcase
3 Create time:
4 Developer:
5 ‘’’
6
7 import time
8 from retail.test_case.models.myunit import MyunitTest
9 from retail.test_case.page_obj.modifypw_page i