class Test_meetingdocument(unittest.TestCase): def setUp(self): self.sc = Config() self.b = BrowserDriver() self.driver = self.b.OpenBrowser() self.driver.implicitly_wait(5) # 全局隐形等待30S self.imgs = [] self.ym = YamlWrite() # 每次执行用例前都登陆网页 self.b.by_find_element('name', 'account').send_keys(self.sc.getConfig('User').get('username')) self.b.by_find_element('name', 'password').send_keys(self.sc.getConfig('User').get('password')) self.b.by_find_element('id', 'login').click() # 先前往用户列表判断是否用用户 self.b.by_find_element('link_text', '用户列表').click() if self.b.isElementExist('xpath','//*[@id="datagrid-row-r1-1-0"]/td[4]/div') == False: # 判断列表内是否有用户,如果没有就创建用户 # 创建10个用户 for i in range(1, 20): if i % 2: self.b.by_find_element('class', 'l-btn-text').click() self.b.by_find_element('name', 'account').send_keys('admin%s' % i) self.b.by_find_element('name', 'password').send_keys('123456') self.b.by_find_element('name', 'username').send_keys('测试用户') self.b.by_find_element('xpath', '//*[@id="layui-layer%s"]/div[2]/form/div[2]/button[1]' % i).click() time.sleep(1) else: continue # 获取共x记录 self.usercount = self.b.by_find_element('css', '.pagination-info').text self.usercount = self.usercount[8:-2] # 再进入会议列表 self.b.by_find_element('link_text', '会议列表').click() # 获取总页数 self.page = self.b.by_find_element('xpath', '//*[@id="wrap"]/div/div[3]/div[2]/div/div[2]/div/div/div[3]/table/tbody/tr/td[8]/span').text self.page = self.page[1:-1] List = [] # 判断会议列表数据是否为空,或只有1页 if self.page == '0' or self.page == '1': # 将列表所有的会议名称添加进集合 for i in self.b.by_find_elements('css', '.datagrid-cell-c1-name'): List.append(i.text) else: for p in range(int(self.page)-1): for i in self.b.by_find_elements('css', '.datagrid-cell-c1-name'): List.append(i.text) self.b.by_find_element('css', '.pagination-next').click() time.sleep(1) # 每次执行用例都判断会议列表中是否有数据 if '测试铭牌设置' not in List: # 点击新增会议 self.b.by_find_element('link_text', '新增会议').click() # 会议名称 self.b.by_find_element('name', 'name').send_keys('测试铭牌设置') # 点击开始时间 self.b.by_find_element('css', '#add_meeting > div > div:nth-child(2) > div.Participants_fr.fl > ' 'span:nth-child(2) > input.textbox-text.validatebox-text').click() # 点击结束时间 self.b.by_find_element('css', '#add_meeting > div > div:nth-child(2) > div.Participants_fr.fl > ' 'span:nth-child(5) > input.textbox-text.validatebox-text').click() # 点击增加时间 self.b.by_find_element('css', 'body > div:nth-child(26) > div > div:nth-child(2) > span > ' 'span > a > a.spinner-arrow-up').click() # 点击确定 self.b.by_find_element('css', 'body > div:nth-child(26) > div > div.datebox-button > table > ' 'tbody > tr > td:nth-child(2) > a').click() # 点击新增确定 self.b.by_find_element('css', '#add_meeting > div > div:nth-child(7) > div:nth-child(1) > button').click() time.sleep(1) '''选择参会人''' # 点击'选择参会人' self.b.by_find_element('css', '.nav_one.n_1.fl.clear').click() time.sleep(1) # 鼠标悬浮在'请选择用户'上 self.b.move_to_element(By.CSS_SELECTOR, '.manage_btn.clear') # 全选用户 self.b.by_find_element('css', '#user-container > div > span > div.sprite_san.fr').click() # 点击确定 self.b.by_find_element('css', '.bottom_y.bottom_b1').click() time.sleep(1) # 进入会议资料界面 self.b.by_find_element('xpath', '//*[@id="wrap"]/div/div[3]/div[2]/div/div[2]/div/ul/a[5]').click() time.sleep(1) else: self.b.by_find_element('link_text', '测试铭牌设置').click() # 判断参会人界面中是否有参会人 if self.b.isElementExist('css', '#datagrid-row-r2-2-0 > td:nth-child(2) > div > span') == False: # 点击'选择参会人' self.b.by_find_element('css', '.nav_one.n_1.fl.clear').click() time.sleep(1) # 鼠标悬浮在'请选择用户'上 self.b.move_to_element(By.CSS_SELECTOR, '.manage_btn.clear') # 全选用户 self.b.by_find_element('css', '#user-container > div > span > div.sprite_san.fr').click() # 点击确定 self.b.by_find_element('css', '.bottom_y.bottom_b1').click() time.sleep(2) # 进入会议资料界面 self.b.by_find_element('xpath', '//*[@id="wrap"]/div/div[3]/div[2]/div/div[2]/div/ul/a[5]').click() time.sleep(1) def tearDown(self): # 结束用例后先退出浏览器,防止cooking保存 self.b.QuitBrowser() def addimg(self): self.imgs.append(self.driver.get_screenshot_as_base64()) return True def test_hyzl_at_01(self): """会议资料界面——检查页面标题""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 获取页面title title = self.b.by_find_element('css', '.personnel.fl').text self.assertEqual('会议资料', title, '页面标题显示错误:%s' % title) print('\n页面标题:%s' % title) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_02(self): """会议资料界面——会议资料顶部栏显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 断言'按名称排序'功能是否存在 self.assertEqual('按名称排序', self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(1)').text, '按名称排序不存在或显示错误') # 断言'按时间排序'功能是否存在 self.assertEqual('按时间排序', self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(2)').text, '按时间排序不存在或显示错误') # 断言'加入文件夹'功能是否存在 self.assertEqual('加入文件夹', self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').text, '加入文件夹不存在或显示错误') # 断言'上传文件夹'功能是否存在 self.assertEqual('上传文件', self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(4)').text, '上传文件不存在或显示错误') # 断言'删除'功能是否存在 self.assertEqual('删除', self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(3)').text, '删除不存在或显示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_03(self): """会议资料界面——会议资料字段显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 断言选择框是否存在 self.assertTrue(self.b.isElementExist('css', '#all-checked'), '选择框不存在') # 断言排序是否存在 self.assertEqual('排序', self.b.by_find_element('css', '.f-flex-content.table_n.clear > li:nth-child(2)').text, '排序不存在或显示错误') # 断言名称是否存在 self.assertEqual('名称', self.b.by_find_element('css', '.f-flex-content.table_n.clear > li:nth-child(3)').text, '名称不存在或显示错误') # 断言上传人是否存在 self.assertEqual('上传人', self.b.by_find_element('css', '.f-flex-content.table_n.clear > li:nth-child(4)').text, '上传人不存在或显示错误') # 断言参与/查看是否存在 self.assertEqual('参与/查看', self.b.by_find_element('css', '.f-flex-content.table_n.clear > li:nth-child(5)').text, '参与/查看不存在或显示错误') # 断言上传时间是否存在 self.assertEqual('上传时间', self.b.by_find_element('css', '.f-flex-content.table_n.clear > li:nth-child(6)').text, '上传时间不存在或显示错误') # 断言操作是否存在 self.assertEqual('操作', self.b.by_find_element('css', '.f-flex-content.table_n.clear > li:nth-child(7)').text, '操作不存在或显示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_04(self): """会议资料界面——新增文件夹字段显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 判断是否存在会议资料,false创建 if self.b.isElementExist('css', '#theadView > div:nth-child(1) > ul > li:nth-child(2) > div > span.f-one-level-span') == False: # 点击'加入文件夹' self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() # 输入文件夹名称 self.b.by_find_element('css', '#view > div:nth-child(1) > div:nth-child(1) > textarea').send_keys('测试新增文件夹') # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() time.sleep(1) self.addimg() self.addimg() # 断言选择框是否存在 self.assertTrue(self.b.isElementExist('xpath', '//*[@id="theadView"]/div[1]/ul/li[1]/input'), '选择框不存在') # 断言序号是否存在 self.assertTrue(self.b.isElementExist('xpath', '//*[@id="theadView"]/div[1]/ul/li[2]/div/span[1]'), '序号不存在或显示错误') # 断言名称是否存在 self.assertTrue(self.b.isElementExist('xpath', '//*[@id="theadView"]/div[1]/ul/li[3]/div/span'), '名称不存在或显示错误') # 断言上传人是否存在 self.assertTrue(self.b.isElementExist('xpath', '//*[@id="theadView"]/div[1]/ul/li[4]'), '上传人不存在或显示错误') # 断言参与/查看人数是否存在 self.assertTrue(self.b.isElementExist('xpath', '//*[@id="theadView"]/div[1]/ul/li[5]'), '参与/查看人数不存在或显示错误') # 断言上传时间是否存在 self.assertTrue(self.b.isElementExist('xpath', '//*[@id="theadView"]/div[1]/ul/li[6]'), '上传时间不存在或显示错误') # 断言操作'文件夹'是否存在 self.assertEqual('文件夹', self.b.by_find_element('xpath', '//*[@id="theadView"]/div[1]/ul/li[7]/span[1]').text, '操作(文件夹)不存在或显示错误') # 断言操作'上传'是否存在 self.assertEqual('上传', self.b.by_find_element('xpath', '//*[@id="theadView"]/div[1]/ul/li[7]/span[2]').text, '操作(上传)不存在或显示错误') # 断言操作'编辑'是否存在 self.assertEqual('编辑', self.b.by_find_element('xpath', '//*[@id="theadView"]/div[1]/ul/li[7]/span[3]').text, '操作(编辑)不存在或显示错误') # 断言操作'删除'是否存在 self.assertEqual('删除', self.b.by_find_element('xpath', '//*[@id="theadView"]/div/ul/li[7]/span[10]').text, '操作(删除)不存在或显示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_05(self): """会议资料界面——操作选择框与全选框""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 判断是否存在会议资料,false创建 if self.b.isElementExist('css', '#theadView > div:nth-child(1) > ul > li:nth-child(2) > div > span.f-one-level-span') == False: # 点击'加入文件夹' self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() # 输入文件夹名称 self.b.by_find_element('css', '#view > div:nth-child(1) > div:nth-child(1) > textarea').send_keys('测试新增文件夹') # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() time.sleep(1) self.addimg() # 点击第一条数据的选择框 self.b.by_find_element('xpath', '//*[@id="theadView"]/div/ul/li[1]/input').click() # 断言第一条数据是否被选中 self.assertTrue( self.b.by_find_element('xpath', '//*[@id="theadView"]/div[1]/ul/li[1]/input').is_selected(), '勾选框未选中') self.addimg() time.sleep(1) # 取消第一条数据的选择 self.b.by_find_element('xpath', '//*[@id="theadView"]/div[1]/ul/li[1]/input').click() # 断言第一条数据是否被取消选中 self.assertFalse( self.b.by_find_element('xpath', '//*[@id="theadView"]/div[1]/ul/li[1]/input').is_selected(), '勾选框未取消') self.addimg() time.sleep(1) # 点击全选框 self.b.by_find_element('css', '#all-checked').click() # 断言全选框是否被选中 self.assertTrue(self.b.by_find_element('css', '#all-checked').is_selected(), '全选框未选中') self.addimg() time.sleep(1) # 取消全选框选择 self.b.by_find_element('css', '#all-checked').click() # 断言全选框是否被取消选中 self.assertFalse(self.b.by_find_element('css', '#all-checked').is_selected(), '全选框未取消') self.addimg() # 点击全选框,取消数据选择框,全选框被取消选中 self.b.by_find_element('css', '#all-checked').click() # 点击数据选择框 self.b.by_find_element('xpath', '//*[@id="theadView"]/div[1]/ul/li[1]/input').click() time.sleep(1) # 断言全选框是否被取消选中 self.assertFalse(self.b.by_find_element('css', '#all-checked').is_selected(), '全选框未取消') self.addimg() logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_06(self): """会议资料界面——每页显示10条数据""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 分页下拉框选择10条/页 Select(self.b.by_find_element('css', '.pagination-page-list')).select_by_visible_text('10') self.addimg() List = [] # 循环整个会议资料,添加进集合,计算本页有多少条数据 for l in self.b.by_find_elements('css', '.f-one-level-span'): List.append(l) self.assertTrue(len(List) <= 10, '超出10条数据') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_07(self): """会议资料界面——每页显示20条数据""" # 选择10条数据 try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) Select(self.b.by_find_element('css', '.pagination-page-list')).select_by_visible_text('20') time.sleep(1) self.addimg() List = [] for l in self.b.by_find_elements('css', '.f-one-level-span'): List.append(l) self.assertTrue(len(List) <= 20, '超出20条数据') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_08(self): """会议资料界面——每页显示50条数据""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) Select(self.b.by_find_element('css', '.pagination-page-list')).select_by_visible_text('50') time.sleep(1) self.addimg() List = [] for l in self.b.by_find_elements('css', '.f-one-level-span'): List.append(l) self.assertTrue(len(List) <= 50, '超出50条数据') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_09(self): """会议资料界面——每页显示100条数据""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) Select(self.b.by_find_element('css', '.pagination-page-list')).select_by_visible_text('100') time.sleep(1) self.addimg() List = [] for l in self.b.by_find_elements('css', '.f-one-level-span'): List.append(l) self.assertTrue(len(List) <= 100, '超出100条数据') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_010(self): """会议资料界面——首页图标点击""" # 点击首页图标,需要回到第一页数据 try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 判断是否存在会议资料,false创建 if self.b.isElementExist('css', '#theadView > div:nth-child(1) > ul > li:nth-child(2) > div > span.f-one-level-span') == False: # 点击'加入文件夹' self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() # 输入文件夹名称 self.b.by_find_element('css', '#view > div:nth-child(1) > div:nth-child(1) > textarea').send_keys('测试新增文件夹') # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() time.sleep(1) self.addimg() # 点击首页图标 self.b.by_find_element('css', '.pagination-first').click() time.sleep(1) self.addimg() # 断言跳转框内数字是否为1 self.assertTrue(self.b.by_find_element('css', 'input.pagination-num').get_attribute('value') == '1', '回到首页失败') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_011(self): """会议资料界面——尾页图标点击""" # 点击尾页图标,需要前往最后一页数据 try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.b.by_find_element('css', '.pagination-last').click() time.sleep(1) self.addimg() # 获取总页数 count = self.b.by_find_element('css', '#pp > table > tbody > tr > td:nth-child(8) > span').text # 截取共X页中的数字 count = count[1:-1] # 获取跳转框内的数字 sum1 = self.b.by_find_element('css', 'input.pagination-num').get_attribute('value') # # 断言共X页是否等于跳转框内的数字 self.assertTrue(count == sum1, '前往尾页失败') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_012(self): """会议资料界面——下一页图标点击""" # 点击下一页图标,需要回到下一页数据 try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 获取页码输入框的数据 sum1 = self.b.by_find_element('css', 'input.pagination-num').get_attribute('value') # 点击下一页 self.b.by_find_element('css', '.pagination-next').click() time.sleep(1) self.addimg() # 获取点击下一页后的输入框数据 sum2 = self.b.by_find_element('css', 'input.pagination-num').get_attribute('value') # 获取总页数 count = self.b.by_find_element('css', '#pp > table > tbody > tr > td:nth-child(8) > span').text # 截取共X页中的数字 count = count[1:-1] if count == '1' or count == '0': self.assertTrue(sum1 == sum2, '点击下一页失败') else: self.assertTrue(int(sum2) == int(sum1) + 1, '点击下一页失败') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_013(self): """会议资料界面——上一页图标点击""" # 点击上一页图标,需要回到上一页数据 try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 获取页码输入框的数据 sum1 = self.b.by_find_element('css', 'input.pagination-num').get_attribute('value') # 点击上一页 self.b.by_find_element('css', '.pagination-prev').click() time.sleep(1) self.addimg() # 点击上一页后获取输入框的数据 sum2 = self.b.by_find_element('css', 'input.pagination-num').get_attribute('value') if sum1 == '1' or sum1 == '0': self.assertTrue(sum1 == sum2, '点击上一页失败') else: self.assertTrue(int(sum2) == (int(sum1) - 1), '点击上一页失败') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_014(self): """会议资料界面——页数搜索(页数框输入小于1的数)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 判断是否存在会议资料,false创建 if self.b.isElementExist('css', '#theadView > div:nth-child(1) > ul > li:nth-child(2) > div > span.f-one-level-span') == False: # 点击'加入文件夹' self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() # 输入文件夹名称 self.b.by_find_element('css', '#view > div:nth-child(1) > div:nth-child(1) > textarea').send_keys('测试新增文件夹') # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() time.sleep(1) self.addimg() # 清空页数框 self.b.by_find_element('css','.pagination-num').clear() # 页数框输入0 self.b.by_find_element('css','.pagination-num').send_keys(0) self.addimg() # 模拟键盘回车 self.b.by_find_element('css', '.pagination-num').send_keys(Keys.ENTER) self.addimg() time.sleep(1) # 获取跳转后的输入框值 sum2 = self.b.by_find_element('css', 'input.pagination-num').get_attribute('value') self.assertTrue(sum2 == '1', '跳转至0页,跳转框数字为%s' % sum2) # 清空页数框 self.b.by_find_element('css','.pagination-num').clear() # 页数框输入输入负数 self.b.by_find_element('css','.pagination-num').send_keys(-1) self.addimg() # 模拟键盘回车 self.b.by_find_element('css', '.pagination-num ').send_keys(Keys.ENTER) self.addimg() time.sleep(1) # 获取跳转后的输入框值 sum2 = self.b.by_find_element('css', 'input.pagination-num').get_attribute('value') self.assertTrue(sum2 == '1', '跳转至-1页,跳转框数字为%s' % sum2) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_015(self): """会议资料界面——页数搜索(页数框输入大于总页数的数)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 判断是否存在会议资料,false创建 if self.b.isElementExist('css', '#theadView > div:nth-child(1) > ul > li:nth-child(2) > div > span.f-one-level-span') == False: # 点击'加入文件夹' self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() # 输入文件夹名称 self.b.by_find_element('css', '#view > div:nth-child(1) > div:nth-child(1) > textarea').send_keys('测试新增文件夹') # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() time.sleep(1) self.addimg() # 清空页数框 self.b.by_find_element('css','.pagination-num').clear() # 获取总页数 count = self.b.by_find_element('css', '#pp > table > tbody > tr > td:nth-child(8) > span').text # 截取共X页中的数字 count = count[1:-1] # 页数框输入总页数+1 self.b.by_find_element('css','.pagination-num').send_keys(int(count)+1) self.addimg() # 模拟键盘回车 self.b.by_find_element('css', '.pagination-num ').send_keys(Keys.ENTER) self.addimg() time.sleep(1) # 获取跳转后的输入框值 sum2 = self.b.by_find_element('css', 'input.pagination-num').get_attribute('value') self.assertTrue(sum2 == count, '跳转至%s页,跳转框数字为%s' % (int(count)+1, sum2)) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_016(self): # 正确跳转界面暂时无法编写,数据无法创建过多 print('暂未编写') pass def test_hyzl_at_017(self): """会议资料界面——总页数显示(查看用户分组页数)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 获取每页数据量,默认为10条/页 sum1 = Select(self.b.by_find_element('css', '.pagination-page-list')).all_selected_options[0].text self.b.by_find_element('css', '.pagination-last').click() # 点击尾页 self.addimg() List = [] # 获取最后一页数据 for l in self.b.by_find_elements('css', '.f-one-level-span'): List.append(l) # 获取跳转框页码, sum2 = int(self.b.by_find_element('css', 'input.pagination-num').get_attribute('value')) # 计算总数据:(页码-1)*每页数据条数+最后一页数据 if sum2 == 0 or sum2 == 1: count = int(len(List)) else: count = (sum2 - 1) * int(sum1) + int(len(List)) # 获取总页数文字 number = self.b.by_find_element('css', '#pp > table > tbody > tr > td:nth-child(8) > span').text # 截取共X页中的数字 numcount = number[1:-1] if count == 0: self.assertTrue(number == '共0页', '页面无数据,总页数显示共%s页'%numcount) elif count > 10: # 计算总页数 pages = (count-int(len(List)))/10+1 self.assertTrue(int(numcount) == pages, '共%s页,但显示共%s页' % (pages, numcount)) elif count <= 10: self.assertTrue(int(numcount) == 1, '共1页,但显示共%s页' % numcount) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_018(self): """会议资料界面——分组条数显示(左下角的分组记录显示)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 获取每页数据量,默认为10条/页 sum1 = Select(self.b.by_find_element('css', '.pagination-page-list')).all_selected_options[0].text self.b.by_find_element('css', '.pagination-last').click() # 点击尾页 time.sleep(1) self.addimg() List = [] # 获取最后一页数据 for l in self.b.by_find_elements('css', '.f-one-level-span'): List.append(l) # 获取跳转框页码, sum2 = int(self.b.by_find_element('css', 'input.pagination-num').get_attribute('value')) # 计算总数据:(页码-1)*每页数据条数+最后一页数据 if sum2 == 0 or sum2 == 1: count = int(len(List)) else: count = (sum2 - 1) * int(sum1) + int(len(List)) # 点击首页图标 self.b.by_find_element('css', '.pagination-first').click() time.sleep(1) self.addimg() # 获取左下角文字 records = self.b.by_find_element('css','.pagination-info').text # 三种情况断言,页面无数据,页面数据小于每页数据量,页面数据大于每页数据量 if count == 0: self.assertTrue(records == '显示0到0,共0记录', '页面无数据,左下角显示错误') elif count > int(sum1): self.assertTrue(records == '显示1到%s,共%s记录' % (int(sum1), count), '页面总数据大于10,左下角显示错误,详情请查看截图') else: self.assertTrue(records == '显示1到%s,共%s记录' % (count, count), '页面总数据小于或等于10,左下角显示错误,详情请查看截图') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_019(self): """会议资料界面——进入加入文件夹界面""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.b.by_find_element('link_text', '参会人员').click() # 获取总页数 page = self.b.by_find_element('xpath', '//*[@id="wrap"]/div/div[3]/div[3]/div/div[2]/div/' 'div/div/div[3]/table/tbody/tr/td[8]/span').text page = page[1:-1] List = [] # 判断参会人员列表数据是否为空,或只有1页 if page == '0' or page == '1': # 将列表所有的参会人员名称添加进集合 for i in self.b.by_find_elements('css', '.datagrid-cell-c2-username'): List.append(i.text) else: for p in range(int(page)): for i in self.b.by_find_elements('css', '.datagrid-cell-c2-username'): List.append(i.text) self.b.by_find_element('css', '.pagination-next').click() time.sleep(1) for i in List: if i == '名称': List.remove(i) # 点击会议资料 self.b.by_find_element('xpath', '//*[@id="wrap"]/div/div[3]/div[2]/div/div[2]/div/ul/a[5]').click() # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() # 断言标题 self.assertEqual('加入文件夹', self.b.by_find_element('css', '.layui-layer-title').text, '进入加入文件夹失败') # 断言用户是否与参会人员相同 newList = [] for n in self.b.by_find_elements('css', 'div.m-meet-datum-popup-right-bd > div > div > ul > li'): newList.append(n.text) self.assertTrue(List == newList, '用户与参会人员不同') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_020(self): """会议资料界面——不输入文件夹名称,点击确定""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() self.addimg() # 断言是否有提示 self.assertEqual('请添加文件夹名称', self.b.by_find_element('css', '.layui-layer-content.layui-layer-padding').text, '未输入文件夹名称,无错误提示') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_021(self): """会议资料界面——不输入文件夹名称,点击确定""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() self.addimg() # 断言是否有提示 self.assertEqual('请添加文件夹名称', self.b.by_find_element('css', '.layui-layer-content.layui-layer-padding').text, '未输入文件夹名称,无错误提示') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_022(self): """会议资料界面——查看全选(全选),点击用户,查看选择框是否可以操作""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() # 判断查看全选是否选中全选 if self.b.by_find_element('css', 'div.m-meet-datum-popup-right-hd > div:nth-child(3) > input[type=radio]').is_selected() == False: # 选中'全选'权限 self.b.by_find_element('css', 'div.m-meet-datum-popup-right-hd > div:nth-child(3) > input[type=radio]').click() for n in self.b.by_find_elements('css', 'div.m-meet-datum-popup-right-bd > div > div > ul > li > input'): n.click() self.assertTrue(n.is_selected(), '%s在全选权限状态被取消选中' % n.find_element_by_xpath('following-sibling::span').text) self.assertTrue(n.is_displayed(), '%s在全选权限状态中,选中框可以操作' % n.find_element_by_xpath('following-sibling::span').text) self.addimg() logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_023(self): """会议资料界面——查看全选(手选),点击用户,查看是否可以被取消选中""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() # 判断查看手选是否选中全选 if self.b.by_find_element('css', 'div.m-meet-datum-popup-right-hd > div:nth-child(2) > input[type=radio]').is_selected() == False: # 选中'手选'权限 self.b.by_find_element('css', 'div.m-meet-datum-popup-right-hd > div:nth-child(2) > input[type=radio]').click() # 循环所有用户的选择框选中状态 for n in self.b.by_find_elements('css', 'div.m-meet-datum-popup-right-bd > div > div > ul > li > input'): n.click() self.assertFalse(n.is_selected(), '%s在手选权限状态无法被取消选中' % n.find_element_by_xpath('following-sibling::span').text) # 点击'手选'权限下的全选操作 self.b.by_find_element('css', 'div.m-meet-datum-popup-right-bd > div > div > h2 > input').click() # 断言是否可以操作,以及出于被选中状态 self.assertTrue(self.b.by_find_element('css','div.m-meet-datum-popup-right-bd > div > div > h2 > input').is_selected(), '全选框无法被选中') self.addimg() logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_024(self): """会议资料界面——删除部分参会人,查看加入文件夹界面右下角人数显示是否正常""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 进入参会人员界面,删除部分参会人员 self.b.by_find_element('link_text', '参会人员').click() # 选择第一个和第二个参会人员删除 self.b.by_find_element('css', '#datagrid-row-r2-2-0 > td:nth-child(1) > div > input').click() self.b.by_find_element('css', '#datagrid-row-r2-2-1 > td:nth-child(1) > div > input').click() # 点击删除 self.b.by_find_element('css', '.nav_one.n_5.fl.batch-delete').click() # 点击确定 self.b.by_find_element('css', '.layui-layer-btn0').click() time.sleep(2) self.addimg() # 获取参会人员总数 count = self.b.by_find_element('css', '.pagination-info').text count = re.findall('\d+\.?\d*',count)[2] # 切换到会议资料界面 self.b.by_find_element('xpath', '//*[@id="wrap"]/div/div[3]/div[2]/div/div[2]/div/ul/a[5]').click() # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() # 获取加入文件夹中的总人数 jcount = self.b.by_find_element('css', 'span.f-fc-blue').text jcount = jcount[:-1] self.assertTrue(count == jcount, '加入文件夹的人数与参会人员的总数相等') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_025(self): """会议资料界面——新增部分参会人,查看加入文件夹界面右下角人数显示是否正常""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 进入参会人员界面,删除部分参会人员 self.b.by_find_element('link_text', '参会人员').click() # 点击'选择参会人' self.b.by_find_element('css', '.nav_one.n_1.fl.clear').click() time.sleep(1) # 鼠标悬浮在'请选择用户'上 self.b.move_to_element(By.CSS_SELECTOR, '.manage_btn.clear') # 全选用户 self.b.by_find_element('css', '#user-container > div > span > div.sprite_san.fr').click() # 点击确定 self.b.by_find_element('css', '.bottom_y.bottom_b1').click() time.sleep(2) self.addimg() # 获取参会人员总数 count = self.b.by_find_element('css', '.pagination-info').text count = re.findall('\d+\.?\d*',count)[2] # 切换到会议资料界面 self.b.by_find_element('xpath', '//*[@id="wrap"]/div/div[3]/div[2]/div/div[2]/div/ul/a[5]').click() # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() # 获取加入文件夹中的总人数 jcount = self.b.by_find_element('css', 'span.f-fc-blue').text jcount = jcount[:-1] self.assertTrue(count == jcount, '加入文件夹的人数与参会人员的总数相等') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_026(self): """会议资料界面——进入加入文件夹界面,鼠标悬浮在?上,查看是否有提示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() self.b.move_to_element(By.CSS_SELECTOR, 'div.m-check-power-tips-box > i') self.assertTrue(self.b.by_find_element('css', 'div.m-check-power-tips-box > p').is_displayed(), '鼠标悬浮在?上,无提示显示') countent1 = self.b.by_find_element('css', 'div.m-check-power-tips-box > p > span:nth-child(1)').text countent2 = self.b.by_find_element('css', 'div.m-check-power-tips-box > p > span:nth-child(2)').text self.assertEqual('手选:后期新增用户需要手动勾选该查看权限', countent1, '悬浮后,显示提示错误') self.assertEqual('全选:后期新增用户自动勾选该查看权限', countent2, '悬浮后,显示提示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_027(self): """会议资料界面——输入同名文件夹名称""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 判断是否存在文件夹 if self.b.isElementExist('css', '#theadView > div:nth-child(1) > ul > li:nth-child(2) > div > span.f-one-level-span'): name = self.b.by_find_element('css', '#theadView > div:nth-child(1) > ul > ' 'li.f-flex-item-5.f-align_item.down.f-text_ellipsis.f-ex > ' 'div > span').text # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() # 输入文件夹名称 self.b.by_find_element('css', '#view > div:nth-child(1) > div:nth-child(1) > textarea').send_keys(name) # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() self.addimg() # 断言是否有提示 self.assertTrue(self.b.isElementExist('css', '.layui-layer-dialog'), '文件夹名称重复,保存后无提示框弹出') self.assertEqual('文件夹名称不能重复', self.b.by_find_element('css', '.layui-layer-dialog > .layui-layer-content').text, '文件夹名称重复,提示错误') else: for i in range(2): # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() # 输入文件夹名称 self.b.by_find_element('css', '#view > div:nth-child(1) > div:nth-child(1) > textarea').send_keys('测试新增文件夹') # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() time.sleep(1) self.addimg() # 断言是否有提示 self.assertTrue(self.b.isElementExist('css', '.layui-layer-dialog'), '文件夹名称重复,保存后无提示框弹出') self.assertEqual('文件夹名称不能重复', self.b.by_find_element('css', '.layui-layer-dialog > .layui-layer-content').text, '文件夹名称重复,提示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_028(self): """会议资料界面——进入加入文件夹界面,选择全选全选,正常保存""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() # 输入文件夹名称 self.b.by_find_element('css', '#view > div:nth-child(1) > div:nth-child(1) > textarea').send_keys('这个文件夹没人使用') name = self.b.by_find_element('css', '#view > div:nth-child(1) > div:nth-child(1) > textarea').get_attribute('value') # 判断查看全选是否选中全选 if self.b.by_find_element('css', 'div.m-meet-datum-popup-right-hd > div:nth-child(3) > input[type=radio]').is_selected() == False: # 选中'全选'权限 self.b.by_find_element('css', 'div.m-meet-datum-popup-right-hd > div:nth-child(3) > input[type=radio]').click() # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() self.addimg() # # 断言是否有提示 # self.assertEqual('保存成功!', self.b.by_find_element('css', '.layui-layer-content.layui-layer-padding').text, # '新建文件夹,提示错误') # 点击尾页 self.b.by_find_element('css', '.pagination-last').click() # 获取最后一页所有的文件夹名称 List = [] for i in self.b.by_find_elements('css', '.f-text_ellipsis.f-flex-item'): List.append(i.text) # 断言最后一页是否有新建的文件夹 self.assertTrue(name in List, '提示新增成功,但列表中无文件夹名称') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_029(self): """会议资料界面——进入加入文件夹界面,选择手选,取消所有参会人员""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() # 判断查看全选是否选中全选 if self.b.by_find_element('css', 'div.m-meet-datum-popup-right-hd > div:nth-child(2) > input[type=radio]').is_selected() == False: # 选中'全选'权限 self.b.by_find_element('css', 'div.m-meet-datum-popup-right-hd > div:nth-child(2) > input[type=radio]').click() # 点击全选,取消所有参会人员的选择 self.b.by_find_element('css', 'div.m-meet-datum-popup-right-bd > div > div > h2 > input').click() # 点击确定 self.b.by_find_element('css', '.div_btn.cz').click() self.addimg() # 断言是否有提示 self.assertEqual('至少选择一个参会人员', self.b.by_find_element('css', '.layui-layer-content.layui-layer-padding').text, '未选择参会人员,提示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyzl_at_030(self): """会议资料界面——进入加入文件夹界面,选择手选,取消参会人员,右下角人数更随变化""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击加入文件夹 self.b.by_find_element('css', '.m-tb-title-btn > div:nth-child(5)').click() self.addimg() # 判断查看全选是否选中全选 if self.b.by_find_element('css', 'div.m-meet-datum-popup-right-hd > div:nth-child(2) > input[type=radio]').is_selected() == False: # 选中'全选'权限 self.b.by_find_element('css', 'div.m-meet-datum-popup-right-hd > div:nth-child(2) > input[type=radio]').click() # 获取加入文件夹中的总人数 jcount = self.b.by_find_element('css', 'span.f-fc-blue').text jcount = int(jcount[:-1]) # for n in self.b.by_find_elements('css', 'div.m-meet-datum-popup-right-bd > div > div > ul > li > input'): # n.click() # self.assertEqual(jcount == , '未选择参会人员,提示错误') # if not n.is_selected(): TO DO logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise
class Test_WelcomeScreen(unittest.TestCase): def setUp(self): self.sc = Config() self.b = BrowserDriver() self.driver = self.b.OpenBrowser() self.driver.implicitly_wait(5) # 全局隐形等待30S self.imgs = [] self.ym = YamlWrite() # 每次执行用例前都登陆网页 self.b.by_find_element('name', 'account').send_keys( self.sc.getConfig('User').get('username')) self.b.by_find_element('name', 'password').send_keys( self.sc.getConfig('User').get('password')) self.b.by_find_element('id', 'login').click() # 先前往用户列表判断是否用用户 self.b.by_find_element('link_text', '用户列表').click() if self.b.isElementExist('xpath', '//*[@id="datagrid-row-r1-1-0"]/td[4]/div' ) == False: # 判断列表内是否有用户,如果没有就创建用户 # 创建10个用户 for i in range(1, 20): if i % 2: self.b.by_find_element('class', 'l-btn-text').click() self.b.by_find_element('name', 'account').send_keys('admin%s' % i) self.b.by_find_element('name', 'password').send_keys('123456') self.b.by_find_element('name', 'username').send_keys('测试用户') self.b.by_find_element( 'xpath', '//*[@id="layui-layer%s"]/div[2]/form/div[2]/button[1]' % i).click() time.sleep(1) else: continue # 获取共x记录 self.usercount = self.b.by_find_element('css', '.pagination-info').text self.usercount = self.usercount[8:-2] # 再进入会议列表 self.b.by_find_element('link_text', '会议列表').click() # 获取总页数 self.page = self.b.by_find_element( 'xpath', '//*[@id="wrap"]/div/div[3]/div[2]/div/div[2]/div/div/div[3]/table/tbody/tr/td[8]/span' ).text self.page = self.page[1:-1] List = [] # 判断会议列表数据是否为空,或只有1页 if self.page == '0' or self.page == '1': # 将列表所有的会议名称添加进集合 for i in self.b.by_find_elements('css', '.datagrid-cell-c1-name'): List.append(i.text) else: for p in range(int(self.page) - 1): for i in self.b.by_find_elements('css', '.datagrid-cell-c1-name'): List.append(i.text) self.b.by_find_element('css', '.pagination-next').click() time.sleep(1) # 每次执行用例都判断会议列表中是否有数据 if '测试铭牌设置' not in List: # 点击新增会议 self.b.by_find_element('link_text', '新增会议').click() # 会议名称 self.b.by_find_element('name', 'name').send_keys('测试铭牌设置') # 点击开始时间 self.b.by_find_element( 'css', '#add_meeting > div > div:nth-child(2) > div.Participants_fr.fl > ' 'span:nth-child(2) > input.textbox-text.validatebox-text' ).click() # 点击结束时间 self.b.by_find_element( 'css', '#add_meeting > div > div:nth-child(2) > div.Participants_fr.fl > ' 'span:nth-child(5) > input.textbox-text.validatebox-text' ).click() # 点击增加时间 self.b.by_find_element( 'css', 'body > div:nth-child(26) > div > div:nth-child(2) > span > ' 'span > a > a.spinner-arrow-up').click() # 点击确定 self.b.by_find_element( 'css', 'body > div:nth-child(26) > div > div.datebox-button > table > ' 'tbody > tr > td:nth-child(2) > a').click() # 点击新增确定 self.b.by_find_element( 'css', '#add_meeting > div > div:nth-child(7) > div:nth-child(1) > button' ).click() time.sleep(1) self.b.by_find_element('link_text', '铭牌设置').click() else: self.b.by_find_element('link_text', '测试铭牌设置').click() # 进入铭牌设置界面 self.b.by_find_element('link_text', '铭牌设置').click() def tearDown(self): # 结束用例后先退出浏览器,防止cooking保存 self.b.QuitBrowser() def addimg(self): self.imgs.append(self.driver.get_screenshot_as_base64()) return True '''欢迎界面设计''' def test_hyjm_at_01(self): """欢迎界面设计——检查页面标题""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 获取页面title title = self.b.by_find_element('css', '.personnel.fl').text self.assertEqual('铭牌设置', title, '页面标题显示错误:%s' % title) print('\n页面标题:%s' % title) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_02(self): """欢迎界面设计——检查顶部标题文字(设计页面)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 获取界面设计title uititle = self.b.by_find_element( 'css', '.nameplate_nav.clear > span:nth-child(1)').text self.assertEqual('欢迎界面设计', uititle, '欢迎界面设计标题显示错误:%s' % uititle) print('\n欢迎界面设计标题:%s' % uititle) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_03(self): """欢迎界面设计——检查欢迎界面设计功能""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 背景标题 bgtitle = self.b.by_find_element( 'css', '#form_view > div.nax > div.m-nameplate-left-content.fl ' '> div.nax_one.f-flex-content > span').text self.assertEqual('背景', bgtitle, '背景标题显示错误:%s' % bgtitle) # 更换背景颜色 ghbgs = self.b.by_find_element( 'css', '#form_view > div.nax > div.m-nameplate-left-content.fl > ' 'div.nax_one.f-flex-content > div:nth-child(2) > label.label_one' ).text self.assertEqual('更换背景色', ghbgs, '更换背景颜色文字显示错误:%s' % ghbgs) # 更换背景 ghbg = self.b.by_find_element( 'css', '#form_view > div.nax > div.m-nameplate-left-content.fl > ' 'div.nax_one.f-flex-content > div:nth-child(2) > label.label_two' ).text self.assertEqual('更换背景', ghbg, '更换背景文字显示错误:%s' % ghbg) # 更换背景(按钮) ghbgan = self.b.by_find_element( 'css', '#form_view > div.nax > div.m-nameplate-left-content.fl > ' 'div.nax_one.f-flex-content > div.clear.f-flex-item.f-nameplate-left-btn-box > div.o_o' ).text self.assertEqual('更换背景', ghbgan, '更换背景(按钮)文字显示错误:%s' % ghbgan) # 内容标题 contenttitle = self.b.by_find_element( 'css', '#form_view > div.nax > div.m-nameplate-left-content.fl ' '> div.nax_two.clear.f-flex-content > span').text self.assertEqual('内容', contenttitle, '内容标题显示错误:%s' % contenttitle) # 显示职位 xxzw = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[2]/div/div[1]/div[1]' ).text self.assertEqual('显示职位', xxzw, '显示职位文字显示错误:%s' % xxzw) # 显示单位 xxdw = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[2]/div/div[1]/div[2]' ).text self.assertEqual('显示单位', xxdw, '显示单位文字显示错误:%s' % xxdw) # 会议名称 hymc = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[2]/div/div[2]/div[1]' ).text self.assertEqual('会议名称', hymc, '会议名称文字显示错误:%s' % hymc) # 会议时间 hysj = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[2]/div/div[2]/div[2]' ).text self.assertEqual('会议时间', hysj, '会议时间文字显示错误:%s' % hysj) # 主持人 zcr = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[2]/div/div[3]/div[1]' ).text self.assertEqual('主持人', zcr, '主持人文字显示错误:%s' % zcr) # 欢迎词 hyc = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[2]/div/div[3]/div[2]' ).text self.assertEqual('欢迎词', hyc, '欢迎词文字显示错误:%s' % hyc) # 参会人 chrs = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[2]/div/div[4]/div' ).text self.assertEqual('参会人', chrs, '参会人文字显示错误:%s' % chrs) # 姓名 xmtitle = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[3]/div[1]/span').text self.assertEqual('姓名', xmtitle, '欢迎词标题显示错误:%s' % xmtitle) # 字号大小 zhdx = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[3]/div[1]/div/div[1]' ).text self.assertTrue('字号大小' in zhdx, '字号大小文字显示错误:%s' % zhdx) # 字体类型 zhlx = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[3]/div[1]/div/div[2]' ).text self.assertTrue('字体类型' in zhlx, '字体类型文字显示错误:%s' % zhlx) # 文本颜色 wbys = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[3]/div[1]/div/div[3]' ).text self.assertTrue('文本颜色' in wbys, '文本颜色文字显示错误:%s' % wbys) # 操作 cztitle = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[4]/i').text self.assertEqual('操作', cztitle, '操作标题显示错误:%s' % cztitle) # 保存 bc = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[4]/div/button[1]').text self.assertEqual('保存', bc, '保存文字显示错误:%s' % bc) # 重置 cz = self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[4]/div/button[2]').text self.assertEqual('重置', cz, '重置文字显示错误:%s' % cz) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_04(self): """欢迎界面设计——'更换背景色'选中(后方出现颜色选择器)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 判断'更换背景色'是否被选中 if self.b.by_find_element( 'css', '.label_one > input[name=v_usebcolor]').is_selected(): self.assertTrue(self.b.isElementExist('css', '#cp5'), '更换背景色被选中,颜色选择器不存在') self.assertTrue( self.b.isElementExist('css', '#v-color-background'), '更换背景色被选中,颜色下拉框不存在') else: self.b.by_find_element( 'css', '.label_one > input[name=v_usebcolor]').click() self.addimg() self.assertTrue(self.b.isElementExist('css', '#cp5'), '更换背景色被选中,颜色选择器不存在') self.assertTrue( self.b.isElementExist('css', '#v-color-background'), '更换背景色被选中,颜色下拉框不存在') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_05(self): """欢迎界面设计——更换背景色(该用例请运行结果未必准确,请查看截图)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 判断'更换背景色'是否被选中 if self.b.by_find_element( 'css', '.label_one > input[name=v_usebcolor]').is_selected(): # 点击颜色选择器 self.b.by_find_element('css', '#v-color-background').click() else: # 点击更换背景颜色选择按钮 self.b.by_find_element( 'css', '.label_one > input[name=v_usebcolor]').click() # 点击颜色选择器 self.b.by_find_element('css', '#v-color-background').click() # 循环所有的colorpicker选择器 for i in self.b.by_find_elements('css', '.colorpicker'): if i.is_displayed(): # 清空颜色输入框 i.find_element_by_css_selector( '.colorpicker_hex > input').clear() # 颜色输入 i.find_element_by_css_selector( '.colorpicker_hex > input').send_keys('0066ff') i.find_element_by_css_selector( '.colorpicker_submit').click() self.addimg() self.b.by_find_element('css', '#v-color-background').click() # 获取R值 R = i.find_element_by_css_selector( '.colorpicker_rgb_r > input').get_attribute('value') # 获取G值 G = i.find_element_by_css_selector( '.colorpicker_rgb_g > input').get_attribute('value') # 获取B值 B = i.find_element_by_css_selector( '.colorpicker_rgb_b > input').get_attribute('value') # 获取设计面板的背景颜色 style = self.b.by_find_element( 'css', '#viDiv').get_attribute('style') self.assertTrue(R and G and B in style, '设计面板颜色未改变') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_06(self): """欢迎界面设计——点击更换背景,查看是否出现背景选择框""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 判断'更换背景'是否被选中 if self.b.by_find_element( 'css', '.label_two > input[name=v_usebcolor]').is_selected(): # 点击'更换背景' self.b.by_find_element('css', '.o_o').click() else: # 点击更换背景选择按钮 self.b.by_find_element( 'css', '.label_two > input[name=v_usebcolor]').click() # # 点击'更换背景' self.b.by_find_element('css', '.o_o').click() self.addimg() self.assertTrue( self.b.isElementExist('css', '.layer-ext-espresso'), '点击更换背景,未出现背景选择框') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_07(self): """欢迎界面设计——更换自带背景(该用例请运行结果未必准确,请查看截图)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 判断'更换背景'是否被选中 if self.b.by_find_element( 'css', '.label_two > input[name=v_usebcolor]').is_selected(): # 点击'更换背景' self.b.by_find_element('css', '.o_o').click() else: # 点击更换背景选择按钮 self.b.by_find_element( 'css', '.label_two > input[name=v_usebcolor]').click() # # 点击'更换背景' self.b.by_find_element('css', '.o_o').click() # 选择第三个背景 self.b.by_find_element( 'css', '#mCSB_1_container > ul > li:nth-child(3) > a > img').click() # 点击确定 self.b.by_find_element('css', '#nameplate-img').click() self.addimg() # 获取背景的src src = self.b.by_find_element( 'css', '#mCSB_1_container > ul > li:nth-child(3) > a > img' ).get_attribute('src') # 获取背景板的style style = self.b.by_find_element('css', '#viDiv').get_attribute('style') src = src[-14:] self.assertTrue(src in style, '背景更换失败') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_08(self): """欢迎界面设计——更换本地背景(该用例请运行结果未必准确,请查看截图)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 判断'更换背景'是否被选中 if self.b.by_find_element( 'css', '.label_two > input[name=v_usebcolor]').is_selected(): # 点击'更换背景' self.b.by_find_element('css', '.o_o').click() else: # 点击更换背景选择按钮 self.b.by_find_element( 'css', '.label_two > input[name=v_usebcolor]').click() # # 点击'更换背景' self.b.by_find_element('css', '.o_o').click() # 选择第三个背景 self.b.by_find_element('css', '.webuploader-element-invisible').send_keys( 'D:\\无纸化测试文件\\测试图片.png') self.addimg() # 获取背景板的style style = self.b.by_find_element('css', '#viDiv').get_attribute('style') self.assertTrue('/public/prapeless/img/' in style, '背景更换失败') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_09(self): """欢迎界面设计——'显示职位'显示与隐藏(该用例请运行结果未必准确,请查看截图)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击显示职务 self.b.by_find_element('css', '#v-showrank').click() self.addimg() # 判断'显示职位'是否被选中 if self.b.by_find_element('css', '#v-showrank').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivE').is_displayed() == True, '显示职位被选中,背景板未显示职务') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivE').is_displayed() == False, '显示职位未选中,背景板显示职务') # 点击显示职务 self.b.by_find_element('css', '#v-showrank').click() self.addimg() # 判断'显示职位'是否被选中 if self.b.by_find_element('css', '#v-showrank').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivE').is_displayed() == True, '显示职位被选中,背景板未显示职务') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivE').is_displayed() == False, '显示职位未选中,背景板显示职务') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_010(self): """欢迎界面设计——'显示单位'显示与隐藏(该用例请运行结果未必准确,请查看截图)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击显示单位 self.b.by_find_element('css', '#v-showcompany').click() self.addimg() # 判断'显示单位'是否被选中 if self.b.by_find_element('css', '#v-showcompany').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivF').is_displayed() == True, '显示单位被选中,背景板未显示单位') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivF').is_displayed() == False, '显示单位未选中,背景板显示单位') # 点击显示单位 self.b.by_find_element('css', '#v-showcompany').click() self.addimg() # 判断'显示单位'是否被选中 if self.b.by_find_element('css', '#v-showcompany').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivF').is_displayed() == True, '显示单位被选中,背景板未显示单位') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivF').is_displayed() == False, '显示单位未选中,背景板显示单位') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_011(self): """欢迎界面设计——'会议名称'显示与隐藏(该用例请运行结果未必准确,请查看截图)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击会议名称 self.b.by_find_element('css', '#showmeeting').click() self.addimg() # 判断'会议名称'是否被选中 if self.b.by_find_element('css', '#showmeeting').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivG').is_displayed() == True, '会议名称被选中,背景板未显示会议名称') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivG').is_displayed() == False, '会议名称未选中,背景板显示会议名称') # 点击会议名称 self.b.by_find_element('css', '#showmeeting').click() self.addimg() # 判断'会议名称'是否被选中 if self.b.by_find_element('css', '#showmeeting').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivG').is_displayed() == True, '会议名称被选中,背景板未显示会议名称') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivG').is_displayed() == False, '会议名称未选中,背景板显示会议名称') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_012(self): """欢迎界面设计——'会议时间'显示与隐藏(该用例请运行结果未必准确,请查看截图)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击会议时间 self.b.by_find_element('css', '#showtime').click() self.addimg() # 判断'会议时间'是否被选中 if self.b.by_find_element('css', '#showtime').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivH').is_displayed() == True, '会议时间被选中,背景板未显示会议时间') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivH').is_displayed() == False, '会议时间未选中,背景板显示会议时间') # 点击会议时间 self.b.by_find_element('css', '#showtime').click() self.addimg() # 判断'会议时间'是否被选中 if self.b.by_find_element('css', '#showtime').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivH').is_displayed() == True, '会议时间被选中,背景板未显示会议时间') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivH').is_displayed() == False, '会议时间未选中,背景板显示会议时间') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_013(self): """欢迎界面设计——'主持人'显示与隐藏(该用例请运行结果未必准确,请查看截图)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击主持人 self.b.by_find_element('css', '#showhost').click() self.addimg() # 判断'主持人'是否被选中 if self.b.by_find_element('css', '#showhost').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivI').is_displayed() == True, '主持人被选中,背景板未显示主持人') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivI').is_displayed() == False, '主持人未选中,背景板显示主持人') # 点击主持人 self.b.by_find_element('css', '#showhost').click() self.addimg() # 判断'主持人'是否被选中 if self.b.by_find_element('css', '#showhost').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivI').is_displayed() == True, '主持人被选中,背景板未显示主持人') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivI').is_displayed() == False, '主持人未选中,背景板显示主持人') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_014(self): """欢迎界面设计——'欢迎词'显示与隐藏(该用例请运行结果未必准确,请查看截图)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击欢迎词 self.b.by_find_element('css', '#showwords').click() self.addimg() # 判断'欢迎词'是否被选中 if self.b.by_find_element('css', '#showwords').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivJ').is_displayed() == True, '欢迎词被选中,背景板未显示欢迎词') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivJ').is_displayed() == False, '欢迎词未选中,背景板显示欢迎词') # 点击欢迎词 self.b.by_find_element('css', '#showwords').click() self.addimg() # 判断'欢迎词'是否被选中 if self.b.by_find_element('css', '#showwords').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivJ').is_displayed() == True, '欢迎词被选中,背景板未显示欢迎词') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivJ').is_displayed() == False, '欢迎词未选中,背景板显示欢迎词') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_015(self): """欢迎界面设计——'参会人'显示与隐藏(该用例请运行结果未必准确,请查看截图)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击参会人 self.b.by_find_element('css', '#v-showusername').click() self.addimg() # 判断'参会人'是否被选中 if self.b.by_find_element('css', '#v-showusername').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivD').is_displayed() == True, '参会人被选中,背景板未显示参会人') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivD').is_displayed() == False, '参会人未选中,背景板显示参会人') # 点击参会人 self.b.by_find_element('css', '#v-showusername').click() self.addimg() # 判断'参会人'是否被选中 if self.b.by_find_element('css', '#v-showusername').is_selected(): self.assertTrue( self.b.by_find_element('css', '#dragDivD').is_displayed() == True, '参会人被选中,背景板未显示参会人') else: self.assertTrue( self.b.by_find_element( 'css', '#dragDivD').is_displayed() == False, '参会人未选中,背景板显示参会人') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_016(self): """欢迎界面设计——铭牌保存(更换背景,取消内容显示后保存)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 判断'更换背景'是否被选中 if self.b.by_find_element( 'css', '.label_two > input[name=v_usebcolor]').is_selected(): # 点击'更换背景' self.b.by_find_element('css', '.o_o').click() else: # 点击更换背景选择按钮 self.b.by_find_element( 'css', '.label_two > input[name=v_usebcolor]').click() # # 点击'更换背景' self.b.by_find_element('css', '.o_o').click() self.addimg() # 选择第三个背景 self.b.by_find_element('css', '.webuploader-element-invisible').send_keys( 'D:\\无纸化测试文件\\测试图片.png') # 循环取消所有的内容显示 for i in self.b.by_find_elements('css', '.one_n.f-flex-item > input'): if i.is_selected(): i.click() self.addimg() # 点击保存 self.b.by_find_element( 'xpath', '//*[@id="form_view"]/div[2]/div[1]/div[4]/div/button[1]' ).click() # 刷新网页 self.b.refresh() self.addimg() # 循环内容显示选中状态,并断言 for i in self.b.by_find_elements('css', '.one_n.f-flex-item > input'): self.assertTrue( i.is_selected() == False, '保存刷新页面后,%s显示选中状态' % i.find_element_by_xpath('..').text) for j in self.b.by_find_elements('css', '#viDiv > div'): self.assertTrue(j.is_displayed() == False, '保存刷新页面后,%s显示在背景板中' % j.text) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_hyjm_at_017(self): """欢迎界面设计——重置""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 点击重置 self.b.by_find_element('css', '#view-reset').click() # 点击确定 self.b.by_find_element('css', '.layui-layer-btn0').click() # logger.info(self.driver.page_source) # self.addimg() # self.assertEqual('设置成功', self.b.by_find_element('css', '.layui-layer-content.layui-layer-padding').text, # '设置成功,提示:%s 错误' % self.b.by_find_element('css', # '.layui-layer-content.layui-layer-padding').text) time.sleep(1) self.addimg() # 循环内容显示选中状态,并断言 for i in self.b.by_find_elements('css', '.one_n.f-flex-item > input'): self.assertTrue( i.is_selected() == True, '保存刷新页面后,%s显示未选中状态' % i.find_element_by_xpath('..').text) for j in self.b.by_find_elements('css', '#viDiv > div'): if j.get_attribute('id') == 'dragDivL': continue self.assertTrue(j.is_displayed() == True, '保存刷新页面后,%s未显示在背景板中' % j.text) # 获取设计面板的背景 style = self.b.by_find_element('css', '#viDiv').get_attribute('style') self.assertTrue('/image/005.png' in style, '背景未重置') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise
class Test_CopywritingDesign(unittest.TestCase): def setUp(self): self.sc = Config() self.b = BrowserDriver() self.driver = self.b.OpenBrowser() self.driver.implicitly_wait(5) # 全局隐形等待30S self.imgs = [] self.ym = YamlWrite() # 每次执行用例前都登陆网页 self.b.by_find_element('name', 'account').send_keys( self.sc.getConfig('User').get('username')) self.b.by_find_element('name', 'password').send_keys( self.sc.getConfig('User').get('password')) self.b.by_find_element('id', 'login').click() # 先前往用户列表判断是否用用户 self.b.by_find_element('link_text', '用户列表').click() if self.b.isElementExist('xpath', '//*[@id="datagrid-row-r1-1-0"]/td[4]/div' ) == False: # 判断列表内是否有用户,如果没有就创建用户 # 创建10个用户 for i in range(1, 20): if i % 2: self.b.by_find_element('class', 'l-btn-text').click() self.b.by_find_element('name', 'account').send_keys('admin%s' % i) self.b.by_find_element('name', 'password').send_keys('123456') self.b.by_find_element('name', 'username').send_keys('测试用户') self.b.by_find_element( 'xpath', '//*[@id="layui-layer%s"]/div[2]/form/div[2]/button[1]' % i).click() time.sleep(1) else: continue # 获取共x记录 self.usercount = self.b.by_find_element('css', '.pagination-info').text self.usercount = self.usercount[8:-2] # 再进入会议列表 self.b.by_find_element('link_text', '会议列表').click() # 获取总页数 self.page = self.b.by_find_element( 'xpath', '//*[@id="wrap"]/div/div[3]/div[2]/div/div[2]/div/div/div[3]/table/tbody/tr/td[8]/span' ).text self.page = self.page[1:-1] List = [] # 判断会议列表数据是否为空,或只有1页 if self.page == '0' or self.page == '1': # 将列表所有的会议名称添加进集合 for i in self.b.by_find_elements('css', '.datagrid-cell-c1-name'): List.append(i.text) else: for p in range(int(self.page) - 1): for i in self.b.by_find_elements('css', '.datagrid-cell-c1-name'): List.append(i.text) self.b.by_find_element('css', '.pagination-next').click() time.sleep(1) # 每次执行用例都判断会议列表中是否有数据 if '测试铭牌设置' not in List: # 点击新增会议 self.b.by_find_element('link_text', '新增会议').click() # 会议名称 self.b.by_find_element('name', 'name').send_keys('测试铭牌设置') # 点击开始时间 self.b.by_find_element( 'css', '#add_meeting > div > div:nth-child(2) > div.Participants_fr.fl > ' 'span:nth-child(2) > input.textbox-text.validatebox-text' ).click() # 点击结束时间 self.b.by_find_element( 'css', '#add_meeting > div > div:nth-child(2) > div.Participants_fr.fl > ' 'span:nth-child(5) > input.textbox-text.validatebox-text' ).click() # 点击增加时间 self.b.by_find_element( 'css', 'body > div:nth-child(26) > div > div:nth-child(2) > span > ' 'span > a > a.spinner-arrow-up').click() # 点击确定 self.b.by_find_element( 'css', 'body > div:nth-child(26) > div > div.datebox-button > table > ' 'tbody > tr > td:nth-child(2) > a').click() # 点击新增确定 self.b.by_find_element( 'css', '#add_meeting > div > div:nth-child(7) > div:nth-child(1) > button' ).click() time.sleep(1) '''选择参会人''' # 点击'选择参会人' self.b.by_find_element('css', '.nav_one.n_1.fl.clear').click() time.sleep(1) # 鼠标悬浮在'请选择用户'上 self.b.move_to_element(By.CSS_SELECTOR, '.manage_btn.clear') # 全选用户 self.b.by_find_element( 'css', '#user-container > div > span > div.sprite_san.fr').click() # 点击确定 self.b.by_find_element('css', '.bottom_y.bottom_b1').click() time.sleep(1) # 进入铭牌设置界面 self.b.by_find_element('link_text', '铭牌设置').click() # 进入文案界面设计 self.b.by_find_element( 'css', '.nameplate_nav.clear > span:nth-child(3)').click() time.sleep(1) else: self.b.by_find_element('link_text', '测试铭牌设置').click() # 判断参会人界面中是否有参会人 if self.b.isElementExist( 'css', '#datagrid-row-r2-2-0 > td:nth-child(2) > div > span' ) == False: # 点击'选择参会人' self.b.by_find_element('css', '.nav_one.n_1.fl.clear').click() time.sleep(1) # 鼠标悬浮在'请选择用户'上 self.b.move_to_element(By.CSS_SELECTOR, '.manage_btn.clear') # 全选用户 self.b.by_find_element( 'css', '#user-container > div > span > div.sprite_san.fr').click( ) # 点击确定 self.b.by_find_element('css', '.bottom_y.bottom_b1').click() time.sleep(2) # 进入铭牌设置界面 self.b.by_find_element('link_text', '铭牌设置').click() # 进入文案界面设计 self.b.by_find_element( 'css', '.nameplate_nav.clear > span:nth-child(3)').click() time.sleep(1) def tearDown(self): # 结束用例后先退出浏览器,防止cooking保存 self.b.QuitBrowser() def addimg(self): self.imgs.append(self.driver.get_screenshot_as_base64()) return True '''文案界面设计''' def test_wajm_at_01(self): """文案界面设计——检查页面标题""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 获取页面title title = self.b.by_find_element('css', '.personnel.fl').text self.assertEqual('铭牌设置', title, '页面标题显示错误:%s' % title) print('\n页面标题:%s' % title) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_02(self): """文案界面设计——检查页面标题""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 获取文案设计title documenttitle = self.b.by_find_element( 'css', '.nameplate_nav.clear > span:nth-child(3)').text self.assertEqual('文案设计', documenttitle, '文案设计标题显示错误:%s' % documenttitle) print('\n文案界面标题:%s' % documenttitle) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_03(self): """文案界面设计——文案设计字段显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 断言姓名显示是否存在 self.assertEqual( '姓名显示', self.b.by_find_element( 'css', 'div.datagrid-view2 > div.datagrid-header > div ' '> table > tbody > tr > td:nth-child(1) > ' 'div > span:nth-child(1)').text, '姓名显示不存在或显示错误') # 断言单位显示是否存在 self.assertEqual( '单位显示', self.b.by_find_element( 'css', 'div.datagrid-view2 > div.datagrid-header > div ' '> table > tbody > tr > td:nth-child(2) > ' 'div > span:nth-child(1)').text, '单位显示不存在或显示错误') # 断言职务显示是否存在 self.assertEqual( '职务显示', self.b.by_find_element( 'css', 'div.datagrid-view2 > div.datagrid-header > div ' '> table > tbody > tr > td:nth-child(3) > ' 'div > span:nth-child(1)').text, '职务显示不存在或显示错误') # 断言预览是否存在 self.assertEqual( '预览', self.b.by_find_element( 'css', 'div.datagrid-view2 > div.datagrid-header > div ' '> table > tbody > tr > td:nth-child(4) > ' 'div > span:nth-child(1)').text, '预览不存在或显示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_04(self): """文案界面设计——文案设计参会人员字段显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 断言序号是否存在 self.assertTrue( self.b.isElementExist('css', '#datagrid-row-r2-1-0 > td > div'), '序号不存在或显示错误') # 断言姓名是否存在 self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r2-2-0 > td:nth-child(1) > div'), '姓名不存在或显示错误') # 断言单位是否存在 self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r2-2-0 > td:nth-child(2) > div'), '单位不存在或显示错误') # 断言职务是否存在 self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r2-2-0 > td:nth-child(3) > div'), '职务不存在或显示错误') # 断言操作'欢迎界面'是否存在 self.assertEqual( '欢迎界面', self.b.by_find_element( 'css', '#datagrid-row-r2-2-0 > td:nth-child(4) ' '> div > a:nth-child(1)').text, '操作(欢迎界面)不存在或显示错误') # 断言操作'铭牌'是否存在 self.assertEqual( '铭牌', self.b.by_find_element( 'css', '#datagrid-row-r2-2-0 > td:nth-child(4) ' '> div > a:nth-child(2)').text, '操作(铭牌)不存在或显示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_05(self): """文案界面设计——每页显示10条数据""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 分页下拉框选择10条/页 Select(self.b.by_find_element( 'css', '.pagination-page-list')).select_by_visible_text('10') self.addimg() List = [] # 循环整个参会人员,添加进集合,计算本页有多少条数据 for l in self.b.by_find_elements('css', '.datagrid-cell-rownumber'): List.append(l) self.assertTrue(len(List) <= 10, '超出10条数据') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_06(self): """文案界面设计——每页显示20条数据""" # 选择10条数据 try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) Select(self.b.by_find_element( 'css', '.pagination-page-list')).select_by_visible_text('20') time.sleep(1) self.addimg() List = [] for l in self.b.by_find_elements('css', '.datagrid-cell-rownumber'): List.append(l) self.assertTrue(len(List) <= 20, '超出20条数据') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_07(self): """文案界面设计——每页显示50条数据""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) Select(self.b.by_find_element( 'css', '.pagination-page-list')).select_by_visible_text('50') time.sleep(1) self.addimg() List = [] for l in self.b.by_find_elements('css', '.datagrid-cell-rownumber'): List.append(l) self.assertTrue(len(List) <= 50, '超出50条数据') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_08(self): """文案界面设计——每页显示100条数据""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) Select(self.b.by_find_element( 'css', '.pagination-page-list')).select_by_visible_text('100') time.sleep(1) self.addimg() List = [] for l in self.b.by_find_elements('css', '.datagrid-cell-rownumber'): List.append(l) self.assertTrue(len(List) <= 100, '超出100条数据') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_09(self): """文案界面设计——首页图标点击""" # 点击首页图标,需要回到第一页数据 try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击首页图标 self.b.by_find_element('css', '.pagination-first').click() time.sleep(1) self.addimg() # 断言跳转框内数字是否为1 self.assertTrue( self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value') == '1', '回到首页失败') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_010(self): """文案界面设计——尾页图标点击""" # 点击尾页图标,需要前往最后一页数据 try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击尾页 self.b.by_find_element('css', '.pagination-last').click() self.addimg() time.sleep(1) # 获取总页数 count = self.b.by_find_element( 'css', '#wrap > div > div.matter.clear > div.right_w.fr.clear >' ' div > div.nameplate_box > div > div.nameplate_w > div > ' 'div:nth-child(3) > div > div > div > div.datagrid-pager.pagination >' ' table > tbody > tr > td:nth-child(8) > span').text # 截取共X页中的数字 count = count[1:-1] # 获取跳转框内的数字 sum1 = self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value') # # 断言共X页是否等于跳转框内的数字 self.assertTrue(count == sum1, '前往尾页失败') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_011(self): """文案界面设计——下一页图标点击""" # 点击下一页图标,需要回到下一页数据 try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 获取页码输入框的数据 sum1 = self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value') # 点击下一页 self.b.by_find_element('css', '.pagination-next').click() time.sleep(1) self.addimg() # 获取点击下一页后的输入框数据 sum2 = self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value') # 获取总页数 count = self.b.by_find_element( 'css', '#wrap > div > div.matter.clear > div.right_w.fr.clear >' ' div > div.nameplate_box > div > div.nameplate_w > div > ' 'div:nth-child(3) > div > div > div > div.datagrid-pager.pagination >' ' table > tbody > tr > td:nth-child(8) > span').text # 截取共X页中的数字 count = count[1:-1] if count == '1' or count == '0': self.assertTrue(sum1 == sum2, '点击下一页失败') else: self.assertTrue(int(sum2) == int(sum1) + 1, '点击下一页失败') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_012(self): """文案界面设计——上一页图标点击""" # 点击上一页图标,需要回到上一页数据 try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 获取页码输入框的数据 sum1 = self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value') # 点击上一页 self.b.by_find_element('css', '.pagination-prev').click() time.sleep(1) self.addimg() # 点击上一页后获取输入框的数据 sum2 = self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value') if sum1 == '1' or sum1 == '0': self.assertTrue(sum1 == sum2, '点击上一页失败') else: self.assertTrue(int(sum2) == (int(sum1) - 1), '点击上一页失败') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_013(self): """文案界面设计——页数搜索(页数框输入小于1的数)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 清空页数框 self.b.by_find_element('css', '.pagination-num').clear() # 页数框输入0 self.b.by_find_element('css', '.pagination-num').send_keys(0) self.addimg() # 模拟键盘回车 self.b.by_find_element('css', '.pagination-num ').send_keys(Keys.ENTER) time.sleep(1) self.addimg() # 获取跳转后的输入框值 sum2 = self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value') self.assertTrue(sum2 == '1', '跳转至0页,跳转框数字为%s' % sum2) # 清空页数框 self.b.by_find_element('css', '.pagination-num').clear() # 页数框输入输入负数 self.b.by_find_element('css', '.pagination-num').send_keys(-1) self.addimg() # 模拟键盘回车 self.b.by_find_element('css', '.pagination-num ').send_keys(Keys.ENTER) self.addimg() time.sleep(1) # 获取跳转后的输入框值 sum2 = self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value') self.assertTrue(sum2 == '1', '跳转至-1页,跳转框数字为%s' % sum2) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_014(self): """文案界面设计——页数搜索(页数框输入大于总页数的数)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 清空页数框 self.b.by_find_element('css', '.pagination-num').clear() # 获取总页数 count = self.b.by_find_element( 'css', '#wrap > div > div.matter.clear > div.right_w.fr.clear >' ' div > div.nameplate_box > div > div.nameplate_w > div > ' 'div:nth-child(3) > div > div > div > div.datagrid-pager.pagination >' ' table > tbody > tr > td:nth-child(8) > span').text # 截取共X页中的数字 count = count[1:-1] # 页数框输入总页数+1 self.b.by_find_element( 'css', '.pagination-num').send_keys(int(count) + 1) self.addimg() # 模拟键盘回车 self.b.by_find_element('css', '.pagination-num ').send_keys(Keys.ENTER) time.sleep(1) self.addimg() # 获取跳转后的输入框值 sum2 = self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value') self.assertTrue(sum2 == count, '跳转至%s页,跳转框数字为%s' % (int(count) + 1, sum2)) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_015(self): # 正确跳转界面暂时无法编写,数据无法创建过多 print('暂时未编写') pass def test_wajm_at_016(self): """文案界面设计——总X数显示(总页数测试)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 获取每页数据量,默认为10条/页 sum1 = Select( self.b.by_find_element( 'css', '.pagination-page-list')).all_selected_options[0].text self.b.by_find_element('css', '.pagination-last').click() # 点击尾页 time.sleep(1) self.addimg() List = [] # 获取最后一页数据 for l in self.b.by_find_elements('css', '.datagrid-cell-rownumber'): List.append(l) # 获取跳转框页码, sum2 = int( self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value')) # 计算总数据:(页码-1)*每页数据条数+最后一页数据 if sum2 == 0 or sum2 == 1: count = int(len(List)) else: count = (sum2 - 1) * int(sum1) + int(len(List)) # 获取总页数 number = self.b.by_find_element( 'css', '#wrap > div > div.matter.clear > div.right_w.fr.clear >' ' div > div.nameplate_box > div > div.nameplate_w > div > ' 'div:nth-child(3) > div > div > div > div.datagrid-pager.pagination >' ' table > tbody > tr > td:nth-child(8) > span').text # 截取共X页中的数字 numcount = number[1:-1] if count == 0: self.assertTrue(number == '共0页', '页面无数据,总页数显示共%s页' % numcount) elif count > 10: # 计算总页数 pages = (count - int(len(List))) / 10 + 1 self.assertTrue( int(numcount) == pages, '共%s页,但显示共%s页' % (pages, numcount)) elif count <= 10: self.assertTrue(int(numcount) == 1, '共1页,但显示共%s页' % numcount) logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_wajm_at_017(self): """文案界面设计——分组条数显示(左下角的分组记录显示)""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 获取每页数据量,默认为10条/页 sum1 = Select( self.b.by_find_element( 'css', '.pagination-page-list')).all_selected_options[0].text self.b.by_find_element('css', '.pagination-last').click() # 点击尾页 time.sleep(1) self.addimg() List = [] # 获取最后一页数据 for l in self.b.by_find_elements('css', '.datagrid-cell-rownumber'): List.append(l) # 获取跳转框页码, sum2 = int( self.b.by_find_element( 'css', 'input.pagination-num').get_attribute('value')) # 计算总数据:(页码-1)*每页数据条数+最后一页数据 if sum2 == 0 or sum2 == 1: count = int(len(List)) else: count = (sum2 - 1) * int(sum1) + int(len(List)) # 点击首页图标 self.b.by_find_element('css', '.pagination-first').click() time.sleep(1) self.addimg() # 获取左下角文字 records = self.b.by_find_element('css', '.pagination-info').text # 三种情况断言,页面无数据,页面数据小于每页数据量,页面数据大于每页数据量 if count == 0: self.assertTrue(records == '显示0到0,共0记录', '页面无数据,左下角显示错误') elif count > int(sum1): self.assertTrue(records == '显示1到%s,共%s记录' % (int(sum1), count), '页面总数据大于10,左下角显示错误,详情请查看截图') else: self.assertTrue(records == '显示1到%s,共%s记录' % (count, count), '页面总数据小于或等于10,左下角显示错误,详情请查看截图') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise
class Test_OrganizationalStructure(unittest.TestCase): def setUp(self): self.sc = Config() self.b = BrowserDriver() self.driver = self.b.OpenBrowser() self.driver.implicitly_wait(5) # 全局隐形等待30S self.imgs = [] self.ym = YamlWrite() # 每次执行用例前都登陆网页 self.b.by_find_element('name', 'account').send_keys( self.sc.getConfig('User').get('username')) self.b.by_find_element('name', 'password').send_keys( self.sc.getConfig('User').get('password')) self.b.by_find_element('id', 'login').click() # 点击用户分组 self.b.by_find_element('link_text', '组织架构').click() def tearDown(self): # 结束用例后先退出浏览器,防止cooking保存 self.b.QuitBrowser() def addimg(self): self.imgs.append(self.driver.get_screenshot_as_base64()) return True '''测试用例''' def test_zzjg_at_01(self): """组织架构界面——标题显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 断言顶标题是否存在 self.assertEqual( '组织架构', self.b.by_find_element('css', '.personnel.fl').text, '标题显示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_zzjg_at_02(self): """组织架构界面——组织架构顶部栏显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() # 断言顶部栏元素是否存在 self.assertEqual('新增单位', self.b.by_find_element('css', '.l-btn-text').text, '顶部栏,新增单位显示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_zzjg_at_03(self): """组织架构界面——组织架构字段显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) self.addimg() self.assertEqual( '名称', self.b.by_find_element( 'xpath', '//*[@id="mCSB_1_container"]/div/div/div[2]/div[2]/div[1]' '/div/table/tbody/tr/td[1]/div/span[1]').text, '名称字段显示错误') self.assertEqual( '操作', self.b.by_find_element( 'xpath', '//*[@id="mCSB_1_container"]/div/div/div[2]/div[2]/div[1]' '/div/table/tbody/tr/td[2]/div/span[1]').text, '操作字段显示错误') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_zzjg_at_04(self): """组织架构界面——新增单位字段显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 判断是否存在单位,false创建 if self.b.isElementExist('css', '.datagrid-row') == False: # 点击'新增单位' self.b.by_find_element('css', '.l-btn-text').click() # 单位名称输入 self.b.by_find_element('name', 'name').send_keys('测试新增单位') # 点击确定 self.b.by_find_element( 'xpath', '//*[@id="layui-layer1"]/div[2]/form/div[2]/button[1]' ).click() time.sleep(1) self.addimg() self.addimg() # 获取第一个部门的node-id value = self.b.by_find_element( 'css', '#mCSB_1_container > div > div > div.datagrid-view > div.datagrid-view2 > ' 'div.datagrid-body > table > tbody > tr:nth-child(1)' ).get_attribute('node-id') self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(1) > div > span.tree-title' % value), '名称字段不存在') self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(1)' % value), '新增部门字段不存在') self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(2)' % value), '编辑字段不存在') self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(3)' % value), '编辑字段不存在') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_zzjg_at_05(self): """组织架构界面——新增部门字段显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 判断是否存在单位,false创建 if self.b.isElementExist('css', '.datagrid-row') == False: # 点击'新增单位' self.b.by_find_element('css', '.l-btn-text').click() # 单位名称输入 self.b.by_find_element('name', 'name').send_keys('测试新增单位') # 点击确定 self.b.by_find_element( 'xpath', '//*[@id="layui-layer1"]/div[2]/form/div[2]/button[1]' ).click() time.sleep(1) self.addimg() # 获取第一个部门的node-id d_nodeid = self.b.by_find_element( 'css', '#mCSB_1_container > div > div > div.datagrid-view > div.datagrid-view2 > ' 'div.datagrid-body > table > tbody > tr:nth-child(1)' ).get_attribute('node-id') if self.b.isElementExist('css', '.treegrid-tr-tree') == False: # 点击新增部门 self.b.by_find_element( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(1)' % d_nodeid).click() # 部门名称输入 self.b.by_find_element('name', 'name').send_keys('测试新增部门') # 点击确认 self.b.by_find_element( 'xpath', '//*[@id="layui-layer1"]/div[2]/form/div[2]/button[1]' ).click() time.sleep(1) self.addimg() b_nodeid = self.b.by_find_element( 'css', '#mCSB_1_container > div > div > div.datagrid-view > ' 'div.datagrid-view2 > div.datagrid-body > table > tbody > ' 'tr.treegrid-tr-tree > td > div > table > tbody > tr:nth-child(1)' ).get_attribute('node-id') self.addimg() self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(1) > div > span.tree-title' % b_nodeid), '名称字段不存在') self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(1)' % b_nodeid), '新增职位字段不存在') self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(2)' % b_nodeid), '编辑字段不存在') self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(3)' % b_nodeid), '编辑字段不存在') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_zzjg_at_06(self): """组织架构界面——新增职位字段显示""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 判断是否存在单位,false创建 if self.b.isElementExist('css', '.datagrid-row') == False: # 点击'新增单位' self.b.by_find_element('css', '.l-btn-text').click() # 单位名称输入 self.b.by_find_element('name', 'name').send_keys('测试新增单位') # 点击确定 self.b.by_find_element( 'xpath', '//*[@id="layui-layer1"]/div[2]/form/div[2]/button[1]' ).click() time.sleep(1) self.addimg() # 获取第一个单位的node-id d_nodeid = self.b.by_find_element( 'css', '#mCSB_1_container > div > div > div.datagrid-view > div.datagrid-view2 > ' 'div.datagrid-body > table > tbody > tr:nth-child(1)' ).get_attribute('node-id') # 判断第一个单位内是否存在部门 if self.b.isElementExist('css', '.treegrid-tr-tree') == False: # 点击新增部门 self.b.by_find_element( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(1)' % d_nodeid).click() # 部门名称输入 self.b.by_find_element('name', 'name').send_keys('测试新增部门') # 点击确认 self.b.by_find_element( 'xpath', '//*[@id="layui-layer1"]/div[2]/form/div[2]/button[1]' ).click() time.sleep(1) self.addimg() # 获取第一个部门的node-id b_nodeid = self.b.by_find_element( 'css', '#mCSB_1_container > div > div > div.datagrid-view > ' 'div.datagrid-view2 > div.datagrid-body > table > tbody > ' 'tr.treegrid-tr-tree > td > div > table > tbody > tr:nth-child(1)' ).get_attribute('node-id') # 判断第一个部门内是否存在职位 if self.b.isElementExist( 'xpath', '//*[@id="mCSB_1_container"]/div/div/div[2]/div[2]/div[2]/table/tbody/tr[2]/td/div/table/tbody/tr[2]' ) == False: # 点击新增职位 self.b.by_find_element( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(1)' % b_nodeid).click() # 职位名称输入 self.b.by_find_element( 'css', '#layui-layer1 > div.layui-layer-content > form > div.middle > div > div > input' ).send_keys('测试新增职位') # 点击确认 self.b.by_find_element( 'xpath', '//*[@id="layui-layer1"]/div[2]/form/div[2]/button[1]' ).click() time.sleep(1) self.addimg() z_nodeid = self.b.by_find_element( 'xpath', '//*[@id="mCSB_1_container"]/div/div/div[2]/div[2]/div[2]/table/tbody/' 'tr[2]/td/div/table/tbody/tr[2]/td/div/table/tbody/tr[1]' ).get_attribute('node-id') self.addimg() self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(1) > div > span.tree-title' % z_nodeid), '名称字段不存在') self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(1)' % z_nodeid), '新增职位字段不存在') self.assertTrue( self.b.isElementExist( 'css', '#datagrid-row-r1-2-%s > td:nth-child(2) > div > a:nth-child(3)' % z_nodeid), '编辑字段不存在') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_zzjg_at_07(self): """组织架构界面——新增单位测试""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击'新增单位' self.b.by_find_element('css', '.l-btn-text').click() # 单位名称输入 self.b.by_find_element('name', 'name').send_keys('测试新增单位') # 获取输入的单位名称 name = self.b.by_find_element('name', 'name').get_attribute('value') # 点击确定 self.b.by_find_element( 'xpath', '//*[@id="layui-layer1"]/div[2]/form/div[2]/button[1]').click( ) time.sleep(1) self.addimg() List = [] for t in self.b.by_find_elements('css', '.tree-title'): List.append(t.text) logger.info(List) self.assertTrue(name in List, '新增单位未显示在列表中') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise def test_zzjg_at_08(self): """组织架构界面——新增单位重置按钮测试""" try: logger.info('开始执行用例%s' % sys._getframe().f_code.co_name) # 点击'新增单位' self.b.by_find_element('css', '.l-btn-text').click() # 单位名称输入 self.b.by_find_element('name', 'name').send_keys('测试新增单位') # 点击重置 self.b.by_find_element( 'xpath', '//*[@id="layui-layer1"]/div[2]/form/div[2]/button[2]').click( ) # 获取输入框的值 name = self.b.by_find_element('name', 'name').get_attribute('value') self.assertTrue(name == '', '重置功能无效') logger.info('用例%s执行成功' % sys._getframe().f_code.co_name) except: logger.exception('用例%s执行失败' % sys._getframe().f_code.co_name) raise