Example #1
0
 def _swipe(self, ui1: Union[Picture,Coordinate,PocoUi],ui2:Union[Picture,Coordinate] = None, direction:tuple=None, focus:tuple=None,duration=0.5,**kw):
     '''
     根据指定的点或者方向进行滑动
     :param ui1: 滑动起始坐标、图像
     :param ui2: 滑动结束坐标、图像
     :param direction: 滑动方向
     :param duration: 滑动时长
     :return:
     '''
     nowUiTree = self._get_ui_tree()
     if self.__last_tree == nowUiTree:
         return True
     #校验参数
     self.__para_check(ui1,[Picture,Coordinate,PocoUi])
     self.__para_check(ui2,[Picture,Coordinate])
     #同时都为图片
     self.__last_tree = self._get_ui_tree()
     if type(ui1)==Picture and type(ui2)==Picture:
         swipe(ui1.getTemplate(),ui2.getTemplate(),direction,duration,**kw)
     #同时都为坐标
     elif type(ui1)==Coordinate and type(ui2)==Coordinate:
         if g().isThePootUsed():
             g().activePoot.swipe(ui1.x,ui1.y,ui2.x,ui2.y,int(duration))
         else:
             g().activePoco.swipe((ui1.x,ui1.y),(ui2.x,ui2.y),direction,duration)
     #ui1为poco,方向不为空时
     elif type(ui1)==PocoUi and direction!=None:
         u1=self.__poco(ui1.info)
         u1.swipe(direction,focus,duration)
     else:
         raise BaseException("不支持的类型组合操作")
Example #2
0
 def fawordmailsuccess(self, assertDict=None):
     self._click(g().get_resource_infor('转发'))
     self._text('*****@*****.**')
     self._click(g().get_resource_infor('点击邮件内容'))
     self._text('转发邮件')
     self._click(g().get_resource_infor('发送'))
     self._performAssert('打开邮件有更多按钮', assertDict)
Example #3
0
    def enterLoginPage(self):
        '''
        :return:登录页
        '''
        #关闭天府手机银行
        self._stopTFBank()
        #运行天府手机银行
        self._startTFBank()
        #等待【主界面】出现
        time.sleep(3)
        self._wait_ui_appear(g().get_resource_infor("手机银行首页定位按钮"))  #手机银行首页

        #self._click(g().get_resource_infor('手机银行主导航界面我的按钮'),focus=(0.8, 0.5))          # 点击 我的跳到登录页面
        time.sleep(3)
        #self._wait_ui_appear(g().get_resource_infor("手机银行主导航界面我的按钮"))
        #self._click(g().get_resource_infor('手机银行首页退出按钮'))
        self._click((0.909, 2063 / 2244))
        loginUi = g().get_resource_infor('登录页面手机号')  # 未登录-有手机号
        welcomeLoginUi = g().get_resource_infor("登录页面欢迎回来")  # 未登录-欢迎回来

        appearUi = self._wait_multiple_ui_appear([loginUi, welcomeLoginUi])
        if appearUi == loginUi:
            self._click(g().get_resource_infor("登录页面更多登录按钮"))  # 点击 更多登录 按钮
            self._click(g().get_resource_infor("登录页面切换账户按钮"))  # 点击 切换账户

        #如果是欢迎登录页面,则直接返回登录页面
        return Login()
Example #4
0
 def selectall(self, assertDict=None):
     self._click(g().get_resource_infor('编辑'))
     self._wait_ui_appear(g().get_resource_infor('全选'))
     self._click(g().get_resource_infor('全选'))
     self._performAssert('断言出现取消全选', assertDict)
     self._click(g().get_resource_infor('取消全选'))
     self._performAssert('断言出现全选', assertDict)
Example #5
0
 def canceldelaccount(self, assertDict=None):
     self._click(g().get_resource_infor('菜单栏'))
     self._click(g().get_resource_infor('设置'))
     self._click(g().get_resource_infor('账号'))
     self._click(g().get_resource_infor('删除账号'))
     self._click(g().get_resource_infor('取消'))
     self._performAssert('删除账号', assertDict)
Example #6
0
 def writemail(self, sendTo, subject, content, assertDict=None):
     self._click(g().get_resource_infor('收件人'))
     self._text(sendTo)
     self._click(g().get_resource_infor('主题'))
     self._text(subject)
     self._click(g().get_resource_infor('邮件内容'))
     self._text(content)
Example #7
0
 def _cancelTips(self):
     '''
     点击弹窗取消按钮,如果有
     :return:
     '''
     if self._exists(g().get_resource_infor('弹窗消息取消按钮')):
         self._click(g().get_resource_infor('弹窗消息取消按钮'))
Example #8
0
 def _confirmTips(self):
     '''
     点击弹窗确定按钮,如果有
     :return:
     '''
     if self._exists(g().get_resource_infor('弹窗消息确定按钮')):
         self._click(g().get_resource_infor('弹窗消息确定按钮'))
Example #9
0
 def _drag(self,ui1:Union[PocoUi,Picture,PootUi],ui2:Union[PocoUi,Picture,PootUi],ui1focus:tuple=None,ui2focus:tuple=None,duration=2):
     '''
     从ui1拖动至ui2,支持图像和poco
     :param ui1:
     :param ui2:
     :param ui1focus:
     :param ui2focus:
     :param duration:
     :return:
     '''
     #校验参数
     self.__para_check(ui2, [PocoUi,Picture,PootUi])
     #坐标
     if type(ui1)==PocoUi and type(ui2)==PocoUi:
         u1=self.__poco(ui1.info)
         self.__set_focus(u1,ui1focus)
         u2 = self.__poco(ui2.info)
         self.__set_focus(u2, ui2focus)
         u1.drag_to(u2, duration)
     elif type(ui1)==Picture and type(ui2)==Picture:
         swipe(ui1.getTemplate(),ui2.getTemplate())
     elif type(ui1)==PootUi and type(ui2)==PootUi:
         ui1x,ui1y=self.__poot(ui1.info).get_focus_x_y(ui1focus)
         ui2x,ui2y=self.__poot(ui2.info).get_focus_x_y(ui2focus)
         g().activePoot.swipe(ui1x,ui1y,ui2x,ui2y,duration)
     else:
         raise BaseException("不支持的类型组合操作")
Example #10
0
 def addOfficalDocumentApproval(self, assertDict):
     '''
     :param assertDict:
     :return: 处理待办公文加签审批人员
     '''
     # 点击公文
     self._click(g().get_resource_infor('公文按钮'))
     # 点击要处理的公文
     self._click(g().get_resource_infor('要加签的公文'))
     # 点击处理
     self._click(g().get_resource_infor('公文处理按钮'))
     self._wait_ui_appear(g().get_resource_infor('公文菜单栏'))
     self._wait_ui_appear(
         g().get_resource_infor('加签按钮'),
         lambda ui: ui._click(g().get_resource_infor('公文菜单栏'),
                              focus=(0.7, 0.5)))
     # 点击加签
     self._click(g().get_resource_infor('加签按钮'))
     # 点击加签人员
     self._click(g().get_resource_infor('联系人ui_test2'))
     # 点击确认
     self._click(g().get_resource_infor('公文确认按钮'))
     self._performAssert('断言处理待办公文加签审批人员成功', assertDict)
     # 点击完成
     self._click(g().get_resource_infor('完成按钮'))
     self._click_back()
     self._click_back()
Example #11
0
 def transferYiBanXieTong(self,assertDict):
     '''
     :param asserDict:
     :return: 转发已办协同
     '''
     # 滑动界面出现批量操作
     if not self._exists(g().get_resource_infor('批量操作按钮')):
         self._swipe((0.6, 0.3), (0.6, 0.5))
     # 点击批量操作
     self._click(g().get_resource_infor('批量操作按钮'))
     # 点击全选
     self._click(g().get_resource_infor('全选按钮'))
     # 点击转发
     self._click(g().get_resource_infor('转发按钮'))
     # 点击转发输入框
     self._click(g().get_resource_infor('转发输入框'))
     self._text('ui_test2')
     # 选择接收人
     self._click(g().get_resource_infor('接收人ui_test2'))
     # 点击选择接收人删除图标
     self._click(g().get_resource_infor('接收人删除图标'))
     # 点击附言输入框
     # self._click(g().get_resource_infor('附言输入框'))
     # self._text('测试转发协同')
     # 点击发送
     self._click(g().get_resource_infor('转发协同发送按钮'))
     self._wait_ui_appear(g().get_resource_infor('协同待办按钮'))
     # 点击已发
     self._click(g().get_resource_infor('协同已发按钮'))
     self._performAssert('断言转发已办协同成功',assertDict)
Example #12
0
 def endXieTong(self, assertDict):
     '''
     :param assertDict:
     :return: 终止待办协同
     '''
     # 点击待办
     self._click(g().get_resource_infor('协同待办按钮'))
     # 点击要处理的协同
     self._click(g().get_resource_infor('已发送协同'))
     # 点击处理
     self._click(g().get_resource_infor('协同处理按钮'))
     # 点击协同菜单栏
     self._click(g().get_resource_infor('协同菜单栏'))
     self._wait_ui_appear(
         g().get_resource_infor('终止按钮'),
         lambda ui: ui._click(g().get_resource_infor('协同菜单栏')))
     # 点击回退
     self._click(g().get_resource_infor('终止按钮'))
     # 点击确定
     self._click(g().get_resource_infor('协同确定按钮'))
     # 点击已办
     self._click(g().get_resource_infor('协同已办按钮'))
     self._performAssert('断言终止待办协同成功', assertDict)
     # 点击已发
     self._click(g().get_resource_infor('协同已发按钮'))
Example #13
0
 def _inputPwdForLatter(self, text, done: bool = True):
     '''
     天府银行密码键盘输入:字母键盘
     :param text:待输入的字符,英文字符、数字、{c}、{d},其中{d}:代表退格键,{c}:代表完成键
     :param done:指示是否自动点击完成按钮,默认自动点击
     :return:
     '''
     if g().activeDevType == "IOS":
         #针对ios
         if not self._exists(g().get_picture('字符转换按钮.png')):
             #数字
             for i in text:
                 self._click(g().get_resource_infor("按键", keys=i))
         else:
             #字母数字键盘
             for i in text:
                 self._click(g().get_resource_infor("按键", keys=i))
     else:
         #对键入值进行处理
         keyList = tools.textProgress(text)
         size = self._get_screen_size()
         while keyList:
             self.__keyboardClick(size, 2, keyList.pop())
         if done:
             self.__keyboardClick(size, 2, "{c}")
Example #14
0
    def test(self):
        # 指定测试数据集
        g().group = '商城测试案例002'
        # 构造数据
        userName = g().get_test_data("用户名")
        vagueUserName = g().get_test_data("模糊用户名")
        loginPwd = g().get_test_data("密码")
        goodName = g().get_test_data("商品名称")

        # 构造断言数据
        assertDict1 = {
            "断言登录成功":
            '''
                        #登录成功断言
                        self.assert_ui_exists(g().get_resource_infor('我的页面设置按钮'),"断言登录成功")
                    ''',
            "断言搜索商品成功":
            '''
                        #断言搜索商品是否成功
                        self.assert_ui_exists(g().get_resource_infor('搜索有结果'),"断言搜索商品成功")
                    '''
        }

        #运行流程
        log('登录手机银行')
        Login().login(userName, vagueUserName, loginPwd)
        Mall().searchGoods(goodName, assertDict=assertDict2)  #搜索商城商品
Example #15
0
 def addpic(self, assertDict=None):
     self._click(g().get_resource_infor('添加图片'))
     self._click(g().get_resource_infor('拍照片'))
     time.sleep(3.0)
     self._click(g().get_resource_infor('拍照'))
     self._wait_ui_appear(g().get_resource_infor('拍照确定'))
     self._click(g().get_resource_infor('拍照确定'))
Example #16
0
 def _inputSmsCheckCode(self, error: bool = False):
     '''
     短信验证码输入(针对已自动填充的短信验证码输入,将删除最后一位并重新填写)
     :param error:指示是否输入错误
     :return:
     '''
     done = True
     # 等待请输入短信验证码出现
     self._wait_ui_appear(g().get_resource_infor('请输入短信验证码文本框'))
     # 判断存在的短信验证码是哪一个ui
     if self._exists(g().get_resource_infor('验证码输入框')):
         checkCodeUi = g().get_resource_infor('验证码输入框')
         done = False
     elif self._exists(g().get_resource_infor('U盾认证页短信验证码输入框')):
         checkCodeUi = g().get_resource_infor('U盾认证页短信验证码输入框')
     else:
         raise BaseException("未在当前界面找到对应的短信验证码控件")
     checkCode = self._get_text(checkCodeUi)
     # 提取验证码的最后一位
     checkCode = checkCode[-1:]
     #如果错误标志为真
     if error:
         #todo:记得过来修改这里
         checkCode = int(checkCode) + 1
     # 验证码重新输入并提交
     self._inputPwdForNumber("{d}%s" % checkCode, done)
Example #17
0
 def revokeSendXieTong(self,reason,revokeType):
     '''
     :return: 撤销已发送协同
     '''
     # 点击协同已发
     self._click(g().get_resource_infor('协同已发按钮'))
     # 点击发送的协同
     if revokeType=='test':
         self._click(g().get_resource_infor('已发送协同'))
     elif revokeType=="oa系统业务申请表":
         self._click(g().get_resource_infor('已发送表单协同'))
     elif revokeType=='test(由ui_test1原发)':
         self._click(g().get_resource_infor('转发的协同'))
     elif revokeType=='test2':
         self._click(g().get_resource_infor('已发送第二个协同'))
     # 点击撤销
     self._click(g().get_resource_infor('撤销按钮'))
     # 点击撤销原因输入框
     self._click(g().get_resource_infor('撤销原因输入框'))
     self._text(reason)
     # 点击确定
     self._click(g().get_resource_infor('确定按钮'))
     # 点击确认撤销
     self._click(g().get_resource_infor('撤销确定按钮'))
     self._wait_ui_appear(g().get_resource_infor('协同已发按钮'))
Example #18
0
 def saveXieTong(self,assertDict=None):
     '''
     :param assertDict:
     :return: 协同保存待发
     '''
     # 点击协同
     self._click(g().get_resource_infor('OA首页协同按钮'))
     # 点击+号新建协同
     self._click(g().get_resource_infor('协同页搜索图标'), focus=(0.8, 0.5))
     # 点击表单模板
     self._click(g().get_resource_infor('表单模板按钮'))
     # 点击全部模板
     self._click(g().get_resource_infor('全部模板按钮'))
     # 点击行政审批
     self._click(g().get_resource_infor('行政审批按钮'))
     # 点击OA系统业务申请表
     self._click(g().get_resource_infor('OA系统业务申请表'))
     # 点击关闭
     self._click(g().get_resource_infor('关闭按钮'))
     # 点击保存到待发
     self._click(g().get_resource_infor('保存到待发按钮'))
     self._wait_ui_appear(g().get_resource_infor('协同待办按钮'))
     # 点击待发
     self._click(g().get_resource_infor('协同待发按钮'))
     self._performAssert('断言协同保存待发成功',assertDict)
    def test(self):
        # 指定登录数据集
        g().group = '商城测试案例003'
        # 构造数据
        userName = g().get_test_data("用户名")
        vagueUserName = g().get_test_data("模糊用户名")
        loginPwd = g().get_test_data("密码")
        goodName = g().get_test_data("商品名称")

        # 构造断言数据
        assertDict = {
            "去逛逛页面跳转成功": '''
                               #断言去逛逛页面跳转成功
                               self.assert_ui_exists(g().get_resource_infor('商品详情页加入购物车按钮'),"断言去逛逛页面跳转成功")
                            '''
        }

        #运行流程
        log('登录手机银行')
        Login().login(userName, vagueUserName, loginPwd)
        time.sleep(2)
        Mall().getIntoGoodsDetail(goodName, assertDict=assertDict)  #搜索商城商品并进入商品详情页面
        time.sleep(2)
        Mall().checkMessageInGoodsDetail(assertDict=assertDict)   #检验商品详情页面消息按钮
        time.sleep(2)
        Mall().checkSearchInGoodsDetail(assertDict=assertDict)    #检验商品详情页面搜索按钮
        time.sleep(2)
        Mall().checkHomepageInGoodsDetail(assertDict=assertDict)  #检验商品详情页面首页按钮
Example #20
0
def save(reportInfor):
    '''
    将报告信息放置到报告列表
    :param reportInfor:
    :return:
    '''
    g().report_list.append(reportInfor)
Example #21
0
 def canceldelmessage(self, assertDict=None):
     '''
     :return:进入工作圈页面
     '''
     self._click(g().get_resource_infor('删除按钮'))
     self._click(g().get_resource_infor('取消'))
     self._performAssert('删除按钮',assertDict)
Example #22
0
 def addtasktopic(self,topicname,assertDict=None):
     self._click(g().get_resource_infor('添加话题'))
     self._wait_ui_appear(g().get_resource_infor('新建话题'))
     self._click(g().get_resource_infor('新建话题'))
     self._text(topicname)
     self._click(g().get_resource_infor('确定'))
     self._performAssert('保存', assertDict)
Example #23
0
 def setActiveDev(self,devName:str):
     '''
     切换活动设备,此方法全局只需要调用一次
     :param devName:
     :return:
     '''
     g().setActiveDev(devName)
Example #24
0
 def delwork(self, assertDict=None):
     self._click(g().get_resource_infor('所有'))
     self._click(g().get_resource_infor('成员按钮'))
     time.sleep(3)
     self._click(g().get_resource_infor('删除工作圈'))
     self._click(g().get_resource_infor('确定'))
     self._performAssert('发布按钮', assertDict)
Example #25
0
 def delworkmember(self, assertDict=None):
     self._click(g().get_resource_infor('所有'))
     self._click(g().get_resource_infor('成员按钮'))
     time.sleep(3)
     self._click(g().get_resource_infor('删除成员按钮'))
     self._click(g().get_resource_infor('删除成员'))
     self._performAssert('加入工作圈人数2人', assertDict)
Example #26
0
 def _get_screen_size(self):
     '''
     获得屏幕尺寸
     :return:
     '''
     if g().isThePootUsed():
         return g().activePoot.get_screen_size()
     return g().activePoco.get_screen_size()
Example #27
0
 def addpicture(self):
     self._click(g().get_resource_infor('拍照按钮'))
     time.sleep(3.0)
     self._click(g().get_resource_infor('拍照片'))
     time.sleep(3.0)
     self._click(g().get_resource_infor('拍照'))
     self._wait_ui_appear(g().get_resource_infor('拍照确定'))
     self._click(g().get_resource_infor('拍照确定'))
Example #28
0
 def postmessage(self, assertDict=None):
     #self._wait_ui_disapper(g().get_resource_infor('图片发送中'))
     self._click(g().get_resource_infor('发送'))
     if self._exists(g().get_resource_infor('提示')):
         self._click(g().get_resource_infor('确定'))
     time.sleep(3)
     self._performAssert('回到工作圈页面', assertDict)
     self._performAssert('失败停留在当前页面', assertDict)
Example #29
0
 def inputmessage(self,content,assertDict=None):
     '''
     :return:进入工作圈页面
     '''
     self._click(g().get_resource_infor('发布按钮'))
     self._click(g().get_resource_infor('发布消息'))
     self._click(g().get_resource_infor('文档输入框'))
     self._set_text(g().get_resource_infor('文档输入框'),content)
Example #30
0
 def workname(self, name,assertDict=None):
     self._click(g().get_resource_infor('所有'))
     self._click(g().get_resource_infor('创建工作圈'))
     self._click(g().get_resource_infor('输入框'))
     self._text(name)
     self._click(g().get_resource_infor('确定'))
     #self._click(g().get_resource_infor('确定创建'))
     self._performAssert('不合法的工作圈名称', assertDict)