class TestCreateActivityClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址
        self.activeweb.findElementByXpathAndInput(LoginPage().account,
                                                  MANAGER_LOGIN_ACCOUNT)
        self.activeweb.findElementByXpathAndInput(LoginPage().password,
                                                  MANAGER_LOGIN_PASSWORD)
        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = ActivityCreatePage()
        self.testpageurl = self.testpage.pageurl  #测试页面url
        self.testpagehdmcinput = self.testpage.hdmc_input  # ---基础信息---#   活动名称输入框路劲
        self.testpagehdlxselect = self.testpage.hdlx_select  # ---基础信息---#   活动类型选项框路径
        self.testpagehdsjstarttime = self.testpage.hdsj_starttime  # ---基础信息---#   活动时间开始时间输入框路径
        self.testpagehdsjendtime = self.testpage.hdsj_endtime  # ---基础信息---#   活动时间结束时间输入框路径
        self.testpagehdysinput = self.testpage.hdys_input  # ---基础信息---#   活动预算输入框路径

        self.testpagehdbztextarea = self.testpage.hdbz_textarea  # ---基础信息---#  活动备注多行输入框路径

        self.testpagejllxselect = self.testpage.jllx_select  # ---活动奖励---# 奖励类型下拉框路径
        self.testpagewtjlp = self.testpage.w_tjlp  # ---活动奖励---# 未添加礼品时,“添加礼品”文字链接路径

        self.testpagecancelbutton = self.testpage.cancelbutton  #取消按钮
        self.testpagesubmitbutton = self.testpage.submitbutton  #提交按钮

        ######################创建优惠券页面###############################
        self.ticketcreatepage = TicketCreatePage()  #创建优惠券页
        self.ticketcreatepage_kcsl_input = self.ticketcreatepage.kcsl_input  #第一部分# 库存数量输入框路径
        self.ticketcreatepage_qyxq_select = self.ticketcreatepage.qyxq_select  #第一部分# 券有效期选择框路径
        self.ticketcreatepage_yhqsm_areatext = self.ticketcreatepage.yhqsm_areatext  #第一部分# 优惠券说明多行输入框路径
        self.ticketcreatepage_yhqmc_input = self.ticketcreatepage.yhqmc_input  #第二部分# 优惠券名称输入框路径
        self.ticketcreatepage_yhlx_select = self.ticketcreatepage.yhlx_select  #第二部分# 优惠类型选择框路径
        self.ticketcreatepage_yhms_select = self.ticketcreatepage.yhms_select  #第二部分# 优惠模式选择框路径
        self.ticketcreatepage_zdxf_input = self.ticketcreatepage.zdxf_input  #第二部分# 最低消费输入框路径
        self.ticketcreatepage_zfqdxz_select = self.ticketcreatepage.zfqdxz_select  #第二部分# 支付渠道限制选择框路径
        self.ticketcreatepage_syfw_select = self.ticketcreatepage.syfw_select  #第二部分# 使用范围选择框路径

        self.ticketcreatepage_confirm_button = self.ticketcreatepage.confirm_button  #页面 确定按钮

        ######################活动列表页###############################
        self.activitylistpage = ActivityListPage()  #活动列表页
        self.activitylistpage_searchtableresult = self.activitylistpage.searchtableresult

        ######################待上线活动详情页###############################
        self.activitydetialspage = ActivityDetialsPage()  #活动列表页

        #pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {
            'name': '.nereus.manager.settle.banks',
            'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'
        }
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义创建活动,
    #投放渠道一级为1表示内部渠道,为2表示外部渠道
    #投放渠道二级为0表示全选,为1,2,等表示选一项和选多项组合,程序中只有全选和选择一项的情况
    # 任务类型为1表示注册,为2表示交易类型
    #奖励类型1表示固定奖励
    def definecreateactivity(self, num, hdmcinputtext, hdlx, hdysinputtext,
                             tfqdyj, tfqdej, hdbztextareainputtext, rwlx,
                             tjrwxz, jyjylx, jyzffs, jymgyhzdcycsinputtext,
                             jymgyhmrcycsinputtext, jllx, iscancel):
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)

        #创建活动
        #填入基础信息部分
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpagehdmcinput,
                                                     hdmcinputtext)  #输入活动名称

        #选择活动类型
        if hdlx == "1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagehdlxselect,
                self.testpage.hdlx_select_lx_option)  # 选择活动类型选择拉新
        elif hdlx == "2":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagehdlxselect,
                self.testpage.hdlx_select_ch_option)  # 选择活动类型选择促活
        elif hdlx == "3":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagehdlxselect,
                self.testpage.hdlx_select_lc_option)  # 选择活动类型选择留存
        elif hdlx == "4":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagehdlxselect,
                self.testpage.hdlx_select_zh_option)  # 选择活动类型选择转化
        elif hdlx == "5":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagehdlxselect,
                self.testpage.hdlx_select_tsbc_option)  # 选择活动类型选择投诉补偿

        self.activeweb.findElementByXpathAndClickAbountData(
            num,
            self.testpagehdsjstarttime,
            self.testpage.hdsj_starttime_daytime,
            pathright=self.testpage.hdsj_starttime_rightmove,
            pathconfirm=self.testpage.hdsj_starttime_queding)  #点选活动时间开始时间
        self.activeweb.findElementByXpathAndClickAbountData(
            num,
            self.testpagehdsjendtime,
            self.testpage.hdsj_endtime_daytime,
            pathright=self.testpage.hdsj_endtime_rightmove,
            pathconfirm=self.testpage.hdsj_endtime_queding)  #点选活动时间结束时间
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpagehdysinput,
                                                     hdysinputtext)  #输入活动预算
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagehdbztextarea, hdbztextareainputtext)  #输入活动备注

        #填入活动奖励部分
        if jllx == "1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagejllxselect,
                self.testpage.jllx_select_gdjl_option)  # 选择奖励类型为固定奖励
        self.activeweb.findElementByXpathAndClickNum(
            num, self.testpagewtjlp)  # 点击添加礼品文字链接(还未添加礼品)

        #进入创建优惠券页,新建优惠券
        #第一部分
        self.activeweb.findElementByXpathAndClickNum(
            num, self.ticketcreatepage.ffzt_kq_checkbox)  # 点击发放状态开始对应的选项框
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.ticketcreatepage_qyxq_select,
            self.ticketcreatepage.qyxq_select_option_xdsj)  # 选择券有效期选项为相对时间
        self.activeweb.findElementByXpathAndInputNum(
            num, self.ticketcreatepage.qyxq_select_option_xdsj_ts_input,
            "2")  # 输入相对时间为2天
        self.activeweb.findElementByXpathAndClickNum(
            num,
            self.ticketcreatepage.yxcbcdf_pt_checkbox)  # 点击营销成本承担方中的平台前的选项框
        self.activeweb.findElementByXpathAndInputNum(
            num, self.ticketcreatepage_yhqsm_areatext,
            "开启-不限库存数-相对时间(相对2天)-平台-代金券-固定金额(面值2000)-不限最低消费-使用平台(点选QRindo)-不限使用范围-支持退券"
        )  # 输入优惠券说明
        #第二部分
        self.activeweb.findElementByXpathAndInputNum(
            num, self.ticketcreatepage_yhqmc_input,
            "test_优惠券_%s" % GetTimeStr().getTimeStr())  # 添加优惠券名称
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.ticketcreatepage_yhlx_select,
            self.ticketcreatepage.yhlx_option_djq)  #优惠类型选择代金券
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.ticketcreatepage_yhms_select,
            self.ticketcreatepage.yhms_select_option_gdje)  #优惠模式选择固定金额
        self.activeweb.findElementByXpathAndInputNum(
            num, self.ticketcreatepage.yhms_select_option_gdje_mz_input,
            "2000")  # 面值输入2000
        if ISXIANGWANG:
            if not self.activeweb.findElementByXpath(
                    self.ticketcreatepage.sypt_mbmpay_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(
                    num,
                    self.ticketcreatepage.sypt_mbmpay_checkbox)  # 使用平台点选mbmpay
            if self.activeweb.findElementByXpath(
                    self.ticketcreatepage.sypt_mydisrupto_checkbox
            ).is_selected():
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.ticketcreatepage.sypt_mydisrupto_checkbox
                )  # 使用平台点选mydisrupto
            if self.activeweb.findElementByXpath(
                    self.ticketcreatepage.sypt_QRindo_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(
                    num,
                    self.ticketcreatepage.sypt_QRindo_checkbox)  # 使用平台点选QRindo

        else:
            self.activeweb.findElementByXpathAndClickNum(
                num,
                self.ticketcreatepage.sypt_mbmpay_checkbox)  # 使用平台点选mbmpay
            self.activeweb.findElementByXpathAndClickNum(
                num, self.ticketcreatepage.sypt_mydisrupto_checkbox
            )  # 使用平台点选mydisrupto
            self.activeweb.findElementByXpathAndClickNum(
                num,
                self.ticketcreatepage.sypt_QRindo_checkbox)  # 使用平台点选QRindo
            self.activeweb.findElementByXpathAndClickNum(
                num, self.ticketcreatepage.sypt_qrindomerchantcashier_checkbox
            )  # 使用平台点选qrindomerchantcashier
            self.activeweb.findElementByXpathAndClickNum(
                num,
                self.ticketcreatepage.sypt_PaySDK_checkbox)  # 使用平台点选PaySDK
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.ticketcreatepage_syfw_select,
            self.ticketcreatepage.syfw_select_option_bx)  #使用范围选择不限
        # self.activeweb.findElementByXpathAndClickNum(num, self.ticketcreatepage.kfyqthddj_bkdjsy_checkbox)  # 可否与其他活动叠加点选不可叠加使用
        self.activeweb.findElementByXpathAndClickNum(
            num, self.ticketcreatepage.sfzctq_kt_checkbox)  # 是否支持退券点选可退

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.ticketcreatepage.confirm_button)  #点击确定按钮
        ################################优惠券创建完成#########################################

        # self.activeweb.delayTime(1000)

        if iscancel:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num, self.testpagecancelbutton)  # 点击取消按钮
        else:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num, self.testpagesubmitbutton)  # 点击提交按钮
            # 断言活动列表中是否有新增加的活动
            self.defineisintable(num, self.activitylistpage_searchtableresult,
                                 hdmcinputtext, 1)

            #获取活动ID
            self.activeweb.findElementByXpathAndScriptClickNum(
                num, self.activitylistpage.table_justone_content_dsx_xq
            )  # 点击列表中第一行中的"详情"
            getid = self.activeweb.findElementByXpathAndReturnText(
                num, self.activitydetialspage.hdid)
            self.activeweb.outPutMyLog("新建活动id:%s" % getid)
            #保存活动id
            filename = "createactivityid.txt"
            GetTimeStr().writeText(filename, getid)

            # filename = 'createactivityid.txt'
            # GetTimeStr().writeText(filename,getid)

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在text:%s" % testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在【%s】中存在:【%s】" % (value[int(tablecolnum)], expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在【%s】不存在:【%s】" %
                                       (tabledic, expecttext))
            self.assertTrue(False)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, hdmcinputtext, hdlx, hdysinputtext, tfqdyj, tfqdej,
                    hdbztextareainputtext, rwlx, tjrwxz, jyjylx, jyzffs,
                    jymgyhzdcycsinputtext, jymgyhmrcycsinputtext, jllx,
                    iscancel):
        def func(self):
            self.definecreateactivity(num, hdmcinputtext, hdlx, hdysinputtext,
                                      tfqdyj, tfqdej, hdbztextareainputtext,
                                      rwlx, tjrwxz, jyjylx, jyzffs,
                                      jymgyhzdcycsinputtext,
                                      jymgyhmrcycsinputtext, jllx, iscancel)

        return func
class TestEditProcessingActivityClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址
        self.activeweb.findElementByXpathAndInput(LoginPage().account,
                                                  MANAGER_LOGIN_ACCOUNT)
        self.activeweb.findElementByXpathAndInput(LoginPage().password,
                                                  MANAGER_LOGIN_PASSWORD)
        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = ProcesingActivityEditPage()
        self.testpageurl = self.testpage.pageurl  #测试页面url

        self.testpagehdsjendtime = self.testpage.hdsj_endtime  # ---基础信息---#   活动时间结束时间输入框路径
        self.testpagehdyszjysinput = self.testpage.hdys_zjys_input  # ---基础信息---#   增加预算输入框路径

        self.testpagejllpedit = self.testpage.y_jllp_table_cz_just_one_edit  # ---活动奖励---#   券“编辑”文字链接

        self.testpagecancelbutton = self.testpage.cancelbutton  #取消按钮
        self.testpagesubmitbutton = self.testpage.submitbutton  #提交按钮

        ######################编辑优惠券页面###############################
        self.processingticketeditpage = ProcessingTicketEditPage(
        )  #进行中的活动的编辑优惠券页

        ######################活动列表页###############################
        self.activitylistpage = ActivityListPage()  #活动列表页
        self.activitylistpage_searchtableresult = self.activitylistpage.searchtableresult

        #pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {
            'name': '.nereus.manager.settle.banks',
            'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'
        }
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义创建活动,
    #投放渠道一级为1表示内部渠道,为2表示外部渠道
    #投放渠道二级为0表示全选,为1,2,等表示选一项和选多项组合,程序中只有全选和选择一项的情况
    # 任务类型为1表示注册,为2表示交易类型
    #奖励类型1表示固定奖励
    def defineeditprocessingactivity(self, num, zjysinputtext, ffzt,
                                     zjkcinputtext, isqcancel, iscancel):
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)

        #创建活动
        #填入基础信息部分
        self.activeweb.delayTime(3)
        self.activeweb.findElementByXpathAndClickAbountData(
            num,
            self.testpagehdsjendtime,
            self.testpage.hdsj_endtime_daytime,
            pathright=self.testpage.hdsj_endtime_rightmove,
            pathconfirm=self.testpage.hdsj_endtime_queding)  #点选活动时间结束时间

        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagehdyszjysinput, zjysinputtext)  #输入活动增加预算

        #填入活动奖励部分
        self.activeweb.findElementByXpathAndClickNum(
            num, self.testpagejllpedit)  # 点击添加礼品中的“编辑”文字按钮

        #进入编辑优惠券页,编辑优惠券
        if ffzt == "1":
            self.activeweb.findElementByXpathAndClickNum(
                num, self.processingticketeditpage.ffzt_kq_checkbox
            )  # 点击发放状态开始对应的选项框
        else:
            self.activeweb.findElementByXpathAndClickNum(
                num, self.processingticketeditpage.ffzt_gb_checkbox
            )  # 点击发放状态关闭对应的选项框

        self.activeweb.findElementByXpathAndInputNum(
            num, self.processingticketeditpage.kcsl_zjkc_input,
            zjkcinputtext)  # 输入增加库存

        # self.activeweb.delayTime(5000)

        if isqcancel:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num,
                self.processingticketeditpage.cancel_button_zdhy)  # 点击取消按钮
        else:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num,
                self.processingticketeditpage.confirm_button_zdhy)  #点击确定按钮

        ################################优惠券创建完成#########################################

        #断言优惠券编辑后的发放状态
        ffzt_text = self.activeweb.findElementByXpathAndReturnText(
            num, self.testpage.y_jllp_table_ffzt_result_just_one)
        print("ffzt_text:%s" % ffzt_text)
        if ffzt == "1":
            self.assertEqual("开启", ffzt_text)
        else:
            self.assertEqual("关闭", ffzt_text)

        # self.activeweb.delayTime(1000)

        if iscancel:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num, self.testpagecancelbutton)  # 点击取消按钮
        else:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num, self.testpagesubmitbutton)  # 点击提交按钮
            # 断言处于活动列表页
            xjhd_text = self.activeweb.findElementByXpathAndReturnText(
                num, self.activitylistpage.xjhd_button_text)
            self.assertEqual(self.activitylistpage.xjhd_button_text_text,
                             xjhd_text)

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在text:%s" % testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在【%s】中存在:【%s】" % (value[int(tablecolnum)], expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在【%s】不存在:【%s】" %
                                       (tabledic, expecttext))
            self.assertTrue(False)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, zjysinputtext, ffzt, zjkcinputtext, isqcancel,
                    iscancel):
        def func(self):
            self.defineeditprocessingactivity(num, zjysinputtext, ffzt,
                                              zjkcinputtext, isqcancel,
                                              iscancel)

        return func
class TestDeleteTicketClass(unittest.TestCase):  # 创建测试类

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址
        self.activeweb.findElementByXpathAndInput(LoginPage().account,MANAGER_LOGIN_ACCOUNT)
        self.activeweb.findElementByXpathAndInput(LoginPage().password,MANAGER_LOGIN_PASSWORD)
        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = ActivityEditPage()
        self.testpageurl =self.testpage.pageurl   #测试页面url
        self.testpagehdmcinput = self.testpage.hdmc_input       # ---基础信息---#   活动名称输入框路劲
        self.testpagehdsjstarttime = self.testpage.hdsj_starttime # ---基础信息---#   活动时间开始时间输入框路径
        self.testpagehdsjendtime = self.testpage.hdsj_endtime  # ---基础信息---#   活动时间结束时间输入框路径
        self.testpagehdysinput  = self.testpage.hdys_input   # ---基础信息---#   活动预算输入框路径
        self.testpagetfqdselect = self.testpage.tfqd_select   # ---基础信息---#  投放渠道下拉框路径
        self.testpagehdbztextarea = self.testpage.hdbz_textarea   # ---基础信息---#  活动备注多行输入框路径
        self.testpagerwlxselect = self.testpage.rwlx_select       # ---活动任务规则---# 任务类型下拉框路径
        self.testpagejllxselect = self.testpage.jllx_select     # ---活动奖励---# 奖励类型下拉框路径
        self.testpagewtjlp = self.testpage.w_tjlp    # ---活动奖励---# 未添加礼品时,“添加礼品”文字链接路径

        self.testpagecancelbutton = self.testpage.cancelbutton   #取消按钮
        self.testpagesubmitbutton = self.testpage.submitbutton   #提交按钮

        ######################创建优惠券页面###############################
        self.ticketcreatepage = TicketCreatePage()   #创建优惠券页
        self.ticketcreatepage_kcsl_input  = self.ticketcreatepage.kcsl_input   #第一部分# 库存数量输入框路径
        self.ticketcreatepage_qyxq_select = self.ticketcreatepage.qyxq_select   #第一部分# 券有效期选择框路径
        self.ticketcreatepage_yhqsm_areatext  = self.ticketcreatepage.yhqsm_areatext    #第一部分# 优惠券说明多行输入框路径
        self.ticketcreatepage_yhqmc_input = self.ticketcreatepage.yhqmc_input    #第二部分# 优惠券名称输入框路径
        self.ticketcreatepage_yhlx_select = self.ticketcreatepage.yhlx_select    #第二部分# 优惠类型选择框路径
        self.ticketcreatepage_yhms_select = self.ticketcreatepage.yhms_select    #第二部分# 优惠模式选择框路径
        self.ticketcreatepage_zdxf_input = self.ticketcreatepage.zdxf_input    #第二部分# 最低消费输入框路径
        self.ticketcreatepage_zfqdxz_select  = self.ticketcreatepage.zfqdxz_select     #第二部分# 支付渠道限制选择框路径
        self.ticketcreatepage_syfw_select   = self.ticketcreatepage.syfw_select     #第二部分# 使用范围选择框路径

        self.ticketcreatepage_confirm_button = self.ticketcreatepage.confirm_button   #页面 确定按钮

        ######################活动列表页###############################
        self.activitylistpage = ActivityListPage()   #活动列表页
        self.activitylistpage_searchtableresult = self.activitylistpage.searchtableresult


        #pass


    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {'name': '.nereus.manager.settle.banks', 'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'}
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义创建活动,
    #投放渠道一级为1表示内部渠道,为2表示外部渠道
    #投放渠道二级为0表示全选,为1,2,等表示选一项和选多项组合,程序中只有全选和选择一项的情况
    # 任务类型为1表示注册,为2表示交易类型
    #奖励类型1表示固定奖励
    def definedeleteticket(self,num,
                             hdmcinputtext,hdysinputtext,
                             tfqdyj, tfqdej,hdbztextareainputtext,
                             rwlx,tjrwxz,
                             jyjylx, jyzffs,
                             jymgyhzdcycsinputtext,jymgyhmrcycsinputtext,
                             jllx,iscancel):
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)

        #创建活动
        #填入基础信息部分
        self.activeweb.findElementByXpathAndInputNum(num,self.testpagehdmcinput, hdmcinputtext)   #输入活动名称
        self.activeweb.findElementByXpathAndClickAbountData(num,self.testpagehdsjstarttime,self.testpage.hdsj_starttime_daytime,pathright=self.testpage.hdsj_starttime_rightmove,pathconfirm=self.testpage.hdsj_starttime_queding)   #点选活动时间开始时间
        self.activeweb.findElementByXpathAndClickAbountData(num,self.testpagehdsjendtime ,self.testpage.hdsj_endtime_daytime,pathright=self.testpage.hdsj_endtime_rightmove,pathconfirm=self.testpage.hdsj_endtime_queding)   #点选活动时间结束时间
        self.activeweb.findElementByXpathAndInputNum(num,self.testpagehdysinput, hdysinputtext)   #输入活动预算
        if tfqdyj =="1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(num,self.testpagetfqdselect,self.testpage.tfqd_select_nbqd_option)  # 投放渠道一级渠道选择内部渠道
            if tfqdej == "0":  # 点击投放渠道二级渠道所有项复选框
                if not self.activeweb.getEleImage(num,self.testpage.tfqd_select_nbqd_fxk_mbmpay_checkbox).is_selected():
                    self.activeweb.findElementByXpathAndClickNum(num,self.testpage.tfqd_select_nbqd_fxk_mbmpay_checkbox)
                if not self.activeweb.getEleImage(num,self.testpage.tfqd_select_nbqd_fxk_mydisrupto_checkbox).is_selected():
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_mydisrupto_checkbox)
                if not self.activeweb.getEleImage(num,self.testpage.tfqd_select_nbqd_fxk_qrindo_checkbox).is_selected():
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_qrindo_checkbox)
                if not self.activeweb.getEleImage(num,self.testpage.tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox).is_selected():
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox)
                if not self.activeweb.getEleImage(num,self.testpage.tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox).is_selected():
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_paysdk_checkbox)
            else:
                if self.activeweb.getEleImage(num,self.testpage.tfqd_select_nbqd_fxk_mbmpay_checkbox).is_selected():
                    self.activeweb.findElementByXpathAndClickNum(num,self.testpage.tfqd_select_nbqd_fxk_mbmpay_checkbox)
                if self.activeweb.getEleImage(num,self.testpage.tfqd_select_nbqd_fxk_mydisrupto_checkbox).is_selected():
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_mydisrupto_checkbox)
                if self.activeweb.getEleImage(num,self.testpage.tfqd_select_nbqd_fxk_qrindo_checkbox).is_selected():
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_qrindo_checkbox)
                if self.activeweb.getEleImage(num,self.testpage.tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox).is_selected():
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox)
                if self.activeweb.getEleImage(num,self.testpage.tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox).is_selected():
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_paysdk_checkbox)

                if tfqdej == "1":
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_mbmpay_checkbox)   #点选投放渠道二级渠道mbmpay项复选框
                elif tfqdej == "2":
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_mydisrupto_checkbox)   #点选投放渠道二级渠道mydisrupto项复选框
                elif tfqdej == "3":
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_qrindo_checkbox)   #点选投放渠道二级渠道qrindo项复选框
                elif tfqdej == "4":
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox)   #点选投放渠道二级渠道qrindomerchantcashier项复选框
                elif tfqdej == "5":
                    self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_paysdk_checkbox)   #点选投放渠道二级渠道paysdk项复选框

        # elif tfqdyj =="2":
        #     self.activeweb.findElementByXpathAndClickOptionXpathNum(num,self.testpagetfqdselect,self.testpage.tfqd_select_wbqd_option)  # 投放渠道一级渠道选择外部渠道
        #     if tfqdej == '0':# 点击投放渠道二级渠道所有项复选框
        #         self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_wbqd_fxk_app_checkbox)
        #         self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_wbqd_fxk_web_checkbox)
        #         self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_wbqd_fxk_sdk_checkbox)
        #     elif tfqdej == "1":
        #         self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_wbqd_fxk_app_checkbox)   #点选投放渠道二级渠道app项复选框
        #     elif tfqdej == "2":
        #         self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_wbqd_fxk_web_checkbox)   #点选投放渠道二级渠道web项复选框
        #     elif tfqdej == "3":
        #         self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_wbqd_fxk_web_checkbox)   #点选投放渠道二级渠道sdk项复选框

        self.activeweb.findElementByXpathAndInputNum(num,self.testpagehdbztextarea, hdbztextareainputtext)   #输入活动备注

        #填入活动任务规则部分
        if rwlx == "1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(num,self.testpagerwlxselect,self.testpage.rwlx_select_zc_option)  # 任务类型选择注册
        elif rwlx=='2':
            self.activeweb.findElementByXpathAndClickOptionXpathNum(num, self.testpagerwlxselect,self.testpage.rwlx_select_jx_option)  # 任务类型选择交易

            if jyjylx == "0":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_jylx_checkbox)  #点击交易类型全选框
            elif jyjylx == "1":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_jylx_fxk_xf_checkbox)  # 点击交易类型-消费前选择框
            elif jyjylx == "2":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_jylx_fxk_cz_checkbox)  # 点击交易类型-充值前选择框
            elif jyjylx == "3":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_jylx_fxk_zz_checkbox)  # 点击交易类型-转账前选择框

            #点击添加限制文字链接
            if tjrwxz == "1":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tjxz)  # 点击添加限制文字链接
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.rwmb_popup_jylx_option)  # 点击添加限制弹框中的交易类型
            elif tjrwxz == "2":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tjxz)  # 点击添加限制文字链接
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.rwmb_popup_zffs_option)  # 点击添加限制弹框中的支付方式
            elif tjrwxz == "3":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tjxz)  # 点击添加限制文字链接
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.rwmb_popup_yhhdcycs_option)  # 点击添加限制弹框中的用户活动参与次数
            elif tjrwxz == "4":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tjxz)  # 点击添加限制文字链接
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.rwmb_popup_zffs_option)  # 点击添加限制弹框中的支付方式
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tjxz)  # 点击添加限制文字链接
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.rwmb_popup_yhhdcycs_option)  # 点击添加限制弹框中的用户活动参与次数



            if jyzffs == "0":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_zffs_checkbox)  #点击支付方式全选框
            elif jyzffs == "1":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_zffs_fxk_qbye_checkbox)  # 点击支付方式-钱包余额前选择框
            elif jyzffs == "2":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_zffs_fxk_yhk_checkbox)  # 点击支付方式-银行卡前选择框
            elif jyzffs == "3":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_zffs_fxk_yhkhq_checkbox)  # 点击支付方式-银行卡+券前选择框
            elif jyzffs == "4":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_zffs_fxk_yehq_checkbox)  # 点击支付方式-余额+券前选择框
            elif jyzffs == "5":
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_zffs_fxk_vahspg_checkbox)  # 点击支付方式-VA或SPG支付前选择框

            print("jymgyhzdcycsinputtext:%s" % jymgyhzdcycsinputtext)
            if jymgyhzdcycsinputtext != None:
                self.activeweb.findElementByXpathAndInputNum(num, self.testpage.jy_wcjy_yhhdcycs_mgyhzdcycs_input, jymgyhzdcycsinputtext)  # 输入每个用户最多参与次数
            if jymgyhmrcycsinputtext != None:
                self.activeweb.findElementByXpathAndInputNum(num, self.testpage.jy_wcjy_yhhdcycs_mgyhmrcycs_input, jymgyhmrcycsinputtext)  # 输入每个用户每日参与次数

        #填入活动奖励部分
        if jllx =="1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(num,self.testpagejllxselect,self.testpage.jllx_select_gdjl_option)  # 选择奖励类型为固定奖励

        self.activeweb.findElementByXpathAndScriptClickNum(num, self.testpage.y_jllp_table_cz_just_two_first_delete)  # 点击奖励礼品中的第一条数据中"删除"
        # self.activeweb.delayTime(5000)
        self.activeweb.findElementByXpathAndScriptClickNum(num, self.testpage.delete_popup_confirm)   #点击删除弹框中的确认按钮


        if iscancel:
            self.activeweb.findElementByXpathAndScriptClickNum(num, self.testpagecancelbutton)  # 点击取消按钮
        else:
            self.activeweb.findElementByXpathAndScriptClickNum(num, self.testpagesubmitbutton)  # 点击提交按钮
            # 断言活动列表中是否有新增加的活动
            self.defineisintable(num, self.activitylistpage_searchtableresult, hdmcinputtext, 1)





    def defineasserttextnum(self,num,testelexpath,expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(num,testelexpath)
        self.assertEqual(expecttext,testtext)
        self.activeweb.outPutMyLog("存在text:%s"%testtext)

    def defineisintable(self,num,testtablexpath,expecttext,tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog("在【%s】中存在:【%s】"% (value[int(tablecolnum)],expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在【%s】不存在:【%s】"% (tabledic,expecttext))
            self.assertTrue(False)



    @staticmethod    #根据不同的参数生成测试用例
    def getTestFunc(num,hdmcinputtext,hdysinputtext,
                    tfqdyj, tfqdej,hdbztextareainputtext,
                    rwlx,tjrwxz,
                    jyjylx, jyzffs,
                    jymgyhzdcycsinputtext,jymgyhmrcycsinputtext,
                    jllx,iscancel):
        def func(self):
            self.definedeleteticket(num,
                             hdmcinputtext,hdysinputtext,
                             tfqdyj, tfqdej,hdbztextareainputtext,
                             rwlx,tjrwxz,
                             jyjylx, jyzffs,
                             jymgyhzdcycsinputtext,jymgyhmrcycsinputtext,
                             jllx,iscancel)
        return func
예제 #4
0
class TestCreateTicketClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址

        if ISONLINE:
            self.activeweb.findElementByXpathAndInput(
                LoginPage().account, ONLINE_MANAGER_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(
                LoginPage().password, ONLINE_MANAGER_LOGIN_PASSWORD)
        else:
            self.activeweb.findElementByXpathAndInput(
                LoginPage().account, TEST_MANAGER_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(
                LoginPage().password, TEST_MANAGER_LOGIN_PASSWORD)

        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)

        self.testpage = TicketCreatePage()
        # self.testpageurl =self.testpage.pageurl   #测试页面url
        self.testpagekcslinput = self.testpage.kcsl_input  #第一部分# 库存数量输入框路径
        self.testpageqyxqselect = self.testpage.qyxq_select  #第一部分# 券有效期选择框路径
        self.testpageyhqsmareatext = self.testpage.yhqsm_areatext  #第一部分# 优惠券说明多行输入框路径
        self.testpageyhqmcinput = self.testpage.yhqmc_input  #第二部分# 优惠券名称输入框路径
        self.testpageyhlxselect = self.testpage.yhlx_select  #第二部分# 优惠类型选择框路径
        self.testpageyhmsselect = self.testpage.yhms_select  #第二部分# 优惠模式选择框路径
        self.testpagezdxfinput = self.testpage.zdxf_input  #第二部分# 最低消费输入框路径
        self.testpagezfqdxzselect = self.testpage.zfqdxz_select  #第二部分# 支付渠道限制选择框路径
        self.testpagesyfwselect = self.testpage.syfw_select  #第二部分# 使用范围选择框路径

        self.testpagecancelbutton = self.testpage.cancel_button  # 页面取消按钮
        self.testpageconfirmbutton = self.testpage.confirm_button  # 页面确定按钮

        ######################创建活动页面###############################
        self.activitycreatepage = ActivityCreatePage()
        self.activitycreatepage_pageurl = self.activitycreatepage.pageurl
        self.activitycreatepage_w_tjlp = self.activitycreatepage.w_tjlp  # ---活动奖励---# 未添加礼品时,“添加礼品”文字链接路径

        #pass
        ######################活动列表页###############################
        self.activitylistpage = ActivityListPage()  #活动列表页
        self.activitylistpage_searchtableresult = self.activitylistpage.searchtableresult

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {
            'name': '.nereus.manager.settle.banks',
            'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'
        }
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义创建活动,
    #发放状态为1表示开启,否则为关闭
    #券有效期为1表示相对时间,否则为绝对时间
    #营销成本承担方为1表示平台,否则为商户
    #优惠类型为1表示代金券
    #优惠模式为1表示固定金额,否则为随机金额
    #支付渠道限制为1表示不限,为2表示钱包余额,为3表示银行卡支付
    #使用平台为0表示两个都点选,1表示点选QRindo,为2表示点选PaySDK
    #使用范围为1表示不限,为2表示指定行业,为3表示指定商户
    #是否支持退券为1表示可退,为2表示不可退

    def definecreateticket(self, num, ffzt, kcslinputtext, qyxq,
                           xdsjtsinputtext, yxcbcdf, yhqmcinputtext, yhlx,
                           yhms, gdjemzinputtext, sjjemzmiminputtext,
                           sjjemzmimaxinputtext, zdxfinputtext, sypt, syfw,
                           zdhyoptionxpath, zdshinputtext, isplsh, plfilepath,
                           sfzctq, iscancel):
        self.activeweb.getUrl(self.activitycreatepage_pageurl)
        self.activeweb.delayTime(3)
        #创建活动
        #填入基础信息部分
        self.activeweb.findElementByXpathAndInputNum(
            num, self.activitycreatepage.hdmc_input, yhqmcinputtext)  #输入活动名称
        self.activeweb.findElementByXpathAndClickAbountData(
            num,
            self.activitycreatepage.hdsj_starttime,
            self.activitycreatepage.hdsj_starttime_daytime,
            pathright=self.activitycreatepage.hdsj_starttime_rightmove,
            pathconfirm=self.activitycreatepage.hdsj_starttime_queding
        )  #点选活动时间开始时间
        self.activeweb.findElementByXpathAndClickAbountData(
            num,
            self.activitycreatepage.hdsj_endtime,
            self.activitycreatepage.hdsj_endtime_daytime,
            pathright=self.activitycreatepage.hdsj_endtime_rightmove,
            pathconfirm=self.activitycreatepage.hdsj_endtime_queding
        )  #点选活动时间结束时间
        self.activeweb.findElementByXpathAndInputNum(
            num, self.activitycreatepage.hdys_input, "2000")  #输入活动预算

        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.activitycreatepage.tfqd_select,
            self.activitycreatepage.tfqd_select_nbqd_option)  # 投放渠道一级渠道选择内部渠道

        if ISONLINE:
            # 点击投放渠道二级渠道第一个选项
            if not self.activeweb.findElementByXpath(
                    self.activitycreatepage.
                    tfqd_select_nbqd_fxk_mbmpay_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.activitycreatepage.
                    tfqd_select_nbqd_fxk_mbmpay_checkbox)
            if self.activeweb.findElementByXpath(
                    self.activitycreatepage.
                    tfqd_select_nbqd_fxk_mydisrupto_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.activitycreatepage.
                    tfqd_select_nbqd_fxk_mydisrupto_checkbox)

            if self.activeweb.findElementByXpath(
                    self.activitycreatepage.
                    tfqd_select_nbqd_fxk_qrindo_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.activitycreatepage.
                    tfqd_select_nbqd_fxk_qrindo_checkbox)
        else:
            # 点选投放渠道二级渠道全部项复选框
            self.activeweb.findElementByXpathAndClickNum(
                num,
                self.activitycreatepage.tfqd_select_nbqd_fxk_mbmpay_checkbox)
            self.activeweb.findElementByXpathAndClickNum(
                num, self.activitycreatepage.
                tfqd_select_nbqd_fxk_mydisrupto_checkbox)
            self.activeweb.findElementByXpathAndClickNum(
                num,
                self.activitycreatepage.tfqd_select_nbqd_fxk_qrindo_checkbox)
            self.activeweb.findElementByXpathAndClickNum(
                num, self.activitycreatepage.
                tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox)
            self.activeweb.findElementByXpathAndClickNum(
                num,
                self.activitycreatepage.tfqd_select_nbqd_fxk_paysdk_checkbox)

        #填入活动任务规则部分
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.activitycreatepage.rwlx_select,
            self.activitycreatepage.rwlx_select_jx_option)  # 任务类型选择交易
        self.activeweb.findElementByXpathAndClickNum(
            num, self.activitycreatepage.jy_wcjy_jylx_checkbox)  # 点击交易类型全选框

        #创建活动页,点击“添加礼品”文字链接
        self.activeweb.findElementByXpathAndClickNum(
            num, self.activitycreatepage_w_tjlp)  # 点击添加礼品文字链接(还未添加礼品)

        #进入创建优惠券页,新建优惠券
        #第一部分
        if ffzt == "1":
            self.activeweb.findElementByXpathAndClickNum(
                num, self.testpage.ffzt_kq_checkbox)  # 点击发放状态开始对应的选项框
        else:
            self.activeweb.findElementByXpathAndClickNum(
                num, self.testpage.ffzt_gb_checkbox)  # 点击发放状态关闭对应的选项框
        if kcslinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagekcslinput, kcslinputtext)  # 输入库存数量
        if qyxq == "1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpageqyxqselect,
                self.testpage.qyxq_select_option_xdsj)  # 选择券有效期选项为相对时间
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpage.qyxq_select_option_xdsj_ts_input,
                xdsjtsinputtext)  # 输入相对时间
        else:
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpageqyxqselect,
                self.testpage.qyxq_select_option_jdsj)  # 选择券有效期选项为绝对时间
            self.activeweb.findElementByXpathAndClickAbountData(
                num,
                self.testpage.qyxq_select_option_jdsj_starttime,
                self.testpage.qyxq_select_option_jdsj_starttime_daytime,
                pathright=self.testpage.
                qyxq_select_option_jdsj_starttime_pathright)  # 点选活动时间开始时间
            self.activeweb.findElementByXpathAndClickAbountData(
                num,
                self.testpage.qyxq_select_option_jdsj_endtime,
                self.testpage.qyxq_select_option_jdsj_endtime_daytime,
                pathright=self.testpage.
                qyxq_select_option_jdsj_endtime_pathright)  # 点选活动时间结束时间
        if yxcbcdf == "1":
            self.activeweb.findElementByXpathAndClickNum(
                num, self.testpage.yxcbcdf_pt_checkbox)  # 点击营销成本承担方中的平台前的选项框
        else:
            self.activeweb.findElementByXpathAndClickNum(
                num, self.testpage.yxcbcdf_sh_checkbox)  # 点击营销成本承担方中的商户前的选项框

        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageyhqsmareatext,
            "%s(发放状态为1表示开启,否则为关闭)- 库存数量:【%s】-%s(券有效期为1表示相对时间(相对天数:【%s】),否则为绝对时间)-%s(营销成本承担方为1表示平台,否则为商户)-%s(优惠类型为1表示代金券)-%s(优惠模式为1表示固定金额,否则为随机金额)-(1-面值:【%s】;2-面值最小值为:【%s】,最大值为:【%s】)-最低消费:【%s】-%s(使用平台为1表示QRindo,为2表示PaySDK)-%s(使用范围为1表示不限,为2表示指定行业,为3表示指定商户)-%s(是否支持退券为1表示可退,为2表示不可退)"
            % (ffzt, kcslinputtext, qyxq, xdsjtsinputtext, yxcbcdf, yhlx, yhms,
               gdjemzinputtext, sjjemzmiminputtext, sjjemzmimaxinputtext,
               zdxfinputtext, sypt, syfw, sfzctq))  # 输入优惠券说明
        #第二部分
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpageyhqmcinput,
                                                     yhqmcinputtext)  # 添加优惠券名称
        if yhlx == "1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpageyhlxselect,
                self.testpage.yhlx_option_djq)  #优惠类型选择代金券

        if yhms == "1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpageyhmsselect,
                self.testpage.yhms_select_option_gdje)  #优惠模式选择固定金额
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpage.yhms_select_option_gdje_mz_input,
                gdjemzinputtext)  # 面值输入
        else:
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpageyhmsselect,
                self.testpage.yhms_select_option_sjje)  # 优惠模式选择随机金额
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpage.yhms_select_option_sjje_mz_min_input,
                sjjemzmiminputtext)  # 面值最小值输入
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpage.yhms_select_option_sjje_mz_max_input,
                sjjemzmimaxinputtext)  # 面值最大值输入
        if zdxfinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpage.zdxf_input, zdxfinputtext)  # 输入最低消费金额
        if ISONLINE:
            #点击使用平台第一个选项
            if not self.activeweb.findElementByXpath(
                    self.testpage.sypt_mbmpay_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpage.sypt_mbmpay_checkbox)  # 使用平台点选mbmpay
            if self.activeweb.findElementByXpath(
                    self.testpage.sypt_mydisrupto_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(
                    num,
                    self.testpage.sypt_mydisrupto_checkbox)  # 使用平台点选mydisrupto
            if self.activeweb.findElementByXpath(
                    self.testpage.sypt_QRindo_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpage.sypt_QRindo_checkbox)  # 使用平台点选QRindo
        else:
            if sypt == "0":
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpage.sypt_QRindo_checkbox)  # 使用平台点选QRindo
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpage.sypt_PaySDK_checkbox)  # 使用平台点选PaySDK
            elif sypt == "1":
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpage.sypt_QRindo_checkbox)  # 使用平台点选QRindo
            elif sypt == "2":
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpage.sypt_PaySDK_checkbox)  # 使用平台点选PaySDK

        if syfw == "1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagesyfwselect,
                self.testpage.syfw_select_option_bx)  #使用范围选择不限
        elif syfw == "2":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagesyfwselect,
                self.testpage.syfw_select_option_zdhy)  #使用范围选择指定行业
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpage.syfw_select_option_zdhy_select,
                self.testpage.syfw_select_option_zdhy_select_option_one
            )  # 指定行业选择一个行业
            self.activeweb.findElementByXpathAndClickNum(
                num,
                self.testpage.syfw_select_option_zdhy_select)  # 再次点击指定行业选择框
        elif syfw == "3":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagesyfwselect,
                self.testpage.syfw_select_option_zdsh)  #使用范围选择指定商户
            if isplsh:
                self.activeweb.findElementByXpathAndAndFileNumVue(
                    num, self.testpage.syfw_select_option_zdsh_pltjsh_button,
                    plfilepath)  # 点击批量添加商户批量导入文件
                self.activeweb.delayTime(6)
            else:
                self.activeweb.findElementByXpathAndInputNum(
                    num, self.testpage.syfw_select_option_zdsh_input,
                    zdshinputtext)  # 输入商户
                self.activeweb.delayTime(3)
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpage.syfw_select_option_zdsh_input_option_one
                )  # 点击商户输入框下拉列表第一项
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpage.syfw_select_option_zdsh_tjsh_button
                )  # 点击添加商户按钮

        if sfzctq == "1":
            self.activeweb.findElementByXpathAndClickNum(
                num, self.testpage.sfzctq_kt_checkbox)  # 是否支持退券点选可退
        elif sfzctq == "2":
            self.activeweb.findElementByXpathAndClickNum(
                num, self.testpage.sfzctq_bkt_checkbox)  # 是否支持退券点选不可退
        if iscancel:
            self.activeweb.findElementByXpathAndClickNum(
                num, self.testpagecancelbutton)  # 点击取消按钮
        else:
            if syfw == "1":
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpageconfirmbutton)  # 点击确定按钮
            elif syfw == "2":
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpage.confirm_button_zdsh)  # 点击确定按钮
            elif syfw == "3":
                self.activeweb.findElementByXpathAndClickNum(
                    num, self.testpage.confirm_button_zdsh)  #点击确定按钮
            # 断言添加礼品列表中是否有新增加的礼品
            self.defineisintable(num, self.activitycreatepage.y_jllp_table,
                                 yhqmcinputtext, 1)
        ################################优惠券创建完成#########################################

        if iscancel:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num, self.activitycreatepage.cancelbutton)  # 点击取消按钮
        else:

            self.activeweb.findElementByXpathAndScriptClickNum(
                num, self.activitycreatepage.submitbutton)  # 点击提交按钮
            # 断言活动列表中是否有新增加的活动
            self.defineisintable(num, self.activitylistpage_searchtableresult,
                                 yhqmcinputtext, 1)

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在text:%s" % testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在%s中存在text:%s" % (value[int(tablecolnum)], expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在%s不存在:%s" % (tabledic, expecttext))
            self.assertTrue(False)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, ffzt, kcslinputtext, qyxq, xdsjtsinputtext, yxcbcdf,
                    yhqmcinputtext, yhlx, yhms, gdjemzinputtext,
                    sjjemzmiminputtext, sjjemzmimaxinputtext, zdxfinputtext,
                    sypt, syfw, zdhyoptionxpath, zdshinputtext, isplsh,
                    plfilepath, sfzctq, iscancel):
        def func(self):
            self.definecreateticket(num, ffzt, kcslinputtext, qyxq,
                                    xdsjtsinputtext, yxcbcdf, yhqmcinputtext,
                                    yhlx, yhms, gdjemzinputtext,
                                    sjjemzmiminputtext, sjjemzmimaxinputtext,
                                    zdxfinputtext, sypt, syfw, zdhyoptionxpath,
                                    zdshinputtext, isplsh, plfilepath, sfzctq,
                                    iscancel)

        return func
예제 #5
0
class TestAddCompanyMerchantClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址

        if ISONLINE:
            self.activeweb.findElementByXpathAndInput(
                LoginPage().account, ONLINE_AGENT_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(
                LoginPage().password, ONLINE_AGENT_LOGIN_PASSWORD)
        else:
            self.activeweb.findElementByXpathAndInput(
                LoginPage().account, TEST_AGENT_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(
                LoginPage().password, TEST_AGENT_LOGIN_PASSWORD)

        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = AddCompanyMerchantPage()
        self.testpageurl = self.testpage.pageurl  #测试页面url
        self.testpagemerchantinfo = self.testpage.merchantinfo  #Merchant info中 元素
        self.testpagebrandnameinput = self.testpage.brandnameinput
        self.testpageemailinput = self.testpage.emailinput
        self.testpagecontactnumberinput = self.testpage.contactnumberinput
        self.testpagemerchanttypeselect = self.testpage.merchanttypeselect
        self.testpagecategoryselect = self.testpage.categoryselect
        self.testpagecriteriaselect = self.testpage.criteriaselect
        self.testpagesiupinput = self.testpage.siupinput
        self.testpageprovinceselect = self.testpage.provinceselect
        self.testpagecityselect = self.testpage.cityselect
        self.testpagedistrictinput = self.testpage.districtinput
        self.testpagevillageinput = self.testpage.villageinput
        self.testpagepostcodeinput = self.testpage.postcodeinput
        self.testpageaddressinput = self.testpage.addressinput
        self.testpagecompanynameinput = self.testpage.companynameinput  #新加
        self.testpageofficialwebsiteinput = self.testpage.officialwebsiteinput  #新加
        self.testpagenpwptaxidinput = self.testpage.npwptaxidinput  #新加
        self.testpagephotosiupimage = self.testpage.photosiupimage  #更换
        self.testpagephotonpwpcompanyimage = self.testpage.photonpwpcompanyimage  #更换
        self.testpagephototdpimage = self.testpage.phototdpimage  #更换
        self.testpageownerpersoninchargeinfo = self.testpage.ownerpersoninchangeinfo  #Owner / Person in Charge info中 元素
        self.testpagenameinput = self.testpage.nameinput
        self.testpagepositioninput = self.testpage.positioninput  #新加
        # self.testpagenpwpinput = self.testpage.npwpinput   #去掉
        # self.testpagetypeidselect = self.testpage.typeidselect   #去掉
        # self.testpageidentitynumberinput = self.testpage.identitynumberinput   #去掉
        # self.testpageaddress2input = self.testpage.address2input   #去掉
        # self.testpagenationalityselect = self.testpage.nationalityselect   #去掉
        self.testpagephoneinput = self.testpage.phoneinput  #更换
        self.testpageemail2input = self.testpage.email2input  #更换
        self.testpagephotofullfacebustimage = self.testpage.photofullfacebustimage  #更换
        self.testpageprofilephotos = self.testpage.profilephotos  #Profile Photos中 元素
        self.testpagelocationphotoimage = self.testpage.locationphotoimage
        self.testpagephotoofthecashiersdeskimage = self.testpage.photoofthecashiersdeskimage
        self.testpageotherphotoimage = self.testpage.otherphotoimage
        self.testpagebankaccount = self.testpage.bankaccount  #Bank account中 元素
        self.testpagebankselect = self.testpage.bankselect
        self.testpageaccountnameinput = self.testpage.accountnameinput
        self.testpageaccountnumberinput = self.testpage.accountnumberinput
        self.testpageqrindoaccount = self.testpage.qrindoaccount  #QRindo account中 元素
        self.testpageqrindoaccountinput = self.testpage.qrindoaccountinput
        self.testpagecheckbutton = self.testpage.checkbutton
        self.testpagesubmitbutton = self.testpage.submitbutton
        self.testpageresetbutton = self.testpage.resetbutton
        #pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {
            'name': '.nereus.manager.settle.banks',
            'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'
        }
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义搜索查找函数
    def defineaddmerchantcompany(
            self,
            num,
            isfictitious=False,
            brandnameinputtext=None,
            emailinputtext=None,
            contactnumberinputtext=None,  #添加公司商户
            merchanttypeselectoptionxpath=None,
            categoryselectoptionxpath=None,
            criteriaselectoptionxpath=None,
            siupinputtext=None,
            provinceselectoptionxpath=None,
            cityselectoptionxpath=None,
            districtinputtext=None,
            villageinputtext=None,
            postcodeinputtext=None,
            addressinputtext=None,
            companynameinputtext=None,
            officialwebsiteinputtext=None,
            npwptaxidinputtext=None,  #新加
            photosiupimagefilepath=None,
            photonpwpcompanyimagefilepath=None,
            phototdpimagefilepath=None,  #更换xpath
            nameinputtext=None,
            positioninputtext=None,  #新加
            # npwpinputtext=None, typeidselectoptionxpath=None,   #去掉
            # identitynumberinputtext=None, address2inputtext=None, nationalityselectoptionxpath=None,   #去掉
        phoneinputtext=None,
            email2inputtext=None,
            photofullfacebustimagefilepath=None,  #更换
            locationphotoimagefilepath=None,
            photoofthecashiersdeskimagefilepath=None,
            otherphotoimagefilepath=None,
            bankselectoptionxpath=None,
            accountnameinputtext=None,
            accountnumberinputtext=None,
            qrindoaccountinputtext=None):
        # self.activeweb.writerCookies(self.cookie, LoginPage().pageurl,MerchantListPage().pageurl)
        if isfictitious:
            self.writexunicookie()
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)

        #添加公司商户
        #添加Basic info
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagebrandnameinput,
            brandnameinputtext)  #输入Brand name
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpageemailinput,
                                                     emailinputtext)  #输入Email

        #添加Merchant info
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagemerchanttypeselect,
            merchanttypeselectoptionxpath)  # 选择Merchant type
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagecategoryselect,
            categoryselectoptionxpath)  # 选择Category
        if criteriaselectoptionxpath != None:
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagecriteriaselect,
                criteriaselectoptionxpath)  # 选择Criteria
        if provinceselectoptionxpath != None:
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpageprovinceselect,
                provinceselectoptionxpath)  # 选择Province
        if cityselectoptionxpath != None:
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagecityselect, cityselectoptionxpath)  # 选择City
        if districtinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagedistrictinput,
                districtinputtext)  # 输入District
        if villageinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagevillageinput, villageinputtext)  # 输入Village
        if postcodeinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagepostcodeinput,
                postcodeinputtext)  # 输入Postcode
        if addressinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpageaddressinput, addressinputtext)  # 输入Address
        if companynameinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagecompanynameinput,
                companynameinputtext)  # 输入Company name   #新加
        if officialwebsiteinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpageofficialwebsiteinput,
                officialwebsiteinputtext)  # 输入Official Website   #新加
        if npwptaxidinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagenpwptaxidinput,
                npwptaxidinputtext)  # 输入NPWP/TAX ID   #新加
        if photonpwpcompanyimagefilepath != None:
            self.activeweb.findElementByXpathAndAndFileNumVue(
                num, self.testpagephotonpwpcompanyimage,
                photonpwpcompanyimagefilepath)  # 添加Photo NPWP Company图片   #更换
        if phototdpimagefilepath != None:
            self.activeweb.findElementByXpathAndAndFileNumVue(
                num, self.testpagephototdpimage,
                phototdpimagefilepath)  # 添加Photo TDP图片   #更换

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpagemerchantinfo)  #点击Merchant info
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageownerpersoninchargeinfo
        )  # 点击Owner / Person in Charge info

        #添加Owner / Person in Charge info
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpagenameinput,
                                                     nameinputtext)  # 输入Name
        if positioninputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagepositioninput,
                positioninputtext)  # 输入Position   #新加
        # self.activeweb.findElementByXpathAndInputNum(num,self.testpagenpwpinput, npwpinputtext)  # 输入NPWP   #去掉
        # self.activeweb.findElementByXpathAndClickOptionXpathNum(num,self.testpagetypeidselect,typeidselectoptionxpath)  # 选择Type ID   #去掉
        # self.activeweb.findElementByXpathAndInputNum(num,self.testpageidentitynumberinput, identitynumberinputtext)  # 输入Identity number   #去掉
        # self.activeweb.findElementByXpathAndInputNum(num,self.testpageaddress2input, address2inputtext)  # 输入Address   #去掉
        # self.activeweb.findElementByXpathAndClickOptionXpathNum(num,self.testpagenationalityselect,nationalityselectoptionxpath)  # 选择Nationality   #去掉
        if phoneinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagephoneinput, phoneinputtext)  # 输入Phone   #更换
        if email2inputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpageemail2input,
                email2inputtext)  # 输入Email   #更换
        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpagephotofullfacebustimage,
            photofullfacebustimagefilepath)  # 添加Photo Full-faceBust图片   #更换

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageownerpersoninchargeinfo
        )  # 点击Owner / Person in Charge info
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageprofilephotos)  # 点击Profile Photos

        #添加Profile Photos
        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpagelocationphotoimage,
            locationphotoimagefilepath)  # 添加Location Photo图片
        if photoofthecashiersdeskimagefilepath != None:
            self.activeweb.findElementByXpathAndAndFileNumVue(
                num, self.testpagephotoofthecashiersdeskimage,
                photoofthecashiersdeskimagefilepath
            )  # 添加Photo of the cashiers desk图片
        if otherphotoimagefilepath != None:
            self.activeweb.findElementByXpathAndAndFileNumVue(
                num, self.testpageotherphotoimage,
                otherphotoimagefilepath)  # 添加Other Photo图片

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageprofilephotos)  # 点击Profile Photos
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpagebankaccount)  # 点击Bank account

        #添加Bank account
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagebankselect, bankselectoptionxpath)  # 选择Bank
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageaccountnameinput,
            accountnameinputtext)  # 输入Account name
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageaccountnumberinput,
            accountnumberinputtext)  # 输入Account number

        # self.activeweb.findElementByXpathAndScriptClickNum(num, self.testpagebankaccount)  # 点击Bank account
        # self.activeweb.findElementByXpathAndScriptClickNum(num, self.testpageqrindoaccount)  # 点击QRindo account
        #
        # self.activeweb.findElementByXpathAndInputNum(num,self.testpageqrindoaccountinput, AGENT_LOGIN_ACCOUNT)  # 输入QRindo account
        # self.activeweb.findElementByXpathAndClickNum(num,self.testpagecheckbutton)   #点击check按钮

        #点击submit按钮
        self.activeweb.findElementByXpathAndClickNum(
            num, self.testpagesubmitbutton)  # 点击submit按钮
        # self.activeweb.delayTime(1000)

        #断言是否有“Success”
        # self.defineasserttextnum(num,AddMerchantSuccessPage().success,AddMerchantSuccessPage().successtext)
        # self.activeweb.findElementByXpathAndClickNum(num,AddMerchantSuccessPage().okbutton)

        #断言是否有“Done”
        self.defineasserttextnum(num,
                                 AddMerchantDonePage().done,
                                 AddMerchantDonePage().donetext)

        # 断言是否有“Waiting for approval”
        self.defineasserttextnum(num,
                                 AddMerchantDonePage().waitingforapproval,
                                 AddMerchantDonePage().waitingforapprovaltext)

        # 断言是否有brandnameinputtext(添加的商户名)
        self.defineasserttextnum(num,
                                 AddMerchantDonePage().merchantnamevalue,
                                 brandnameinputtext)

        self.activeweb.findElementByXpathAndClickNum(
            num,
            AddMerchantDonePage().merchantlistbutton)
        #断言商户列表中是否有新增加的商户名
        self.defineisintable(num,
                             MerchantListPage().searchtableresult,
                             brandnameinputtext, 1)
        #点击商户列表新建商户的Detail进入商户详情页;
        self.activeweb.findElementByXpathAndClickNum(
            num,
            MerchantListPage().operation_waitingforreview_details)

        #断言详情页中的内容
        #详情页存在Basic info
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().basicinfo,
                                        CompanyDetailsPage().basicinfotext)
        #断言存在Merchant ID
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().merchantid,
                                        CompanyDetailsPage().merchantidtext)
        merchantid = self.activeweb.findElementByXpathAndReturnText(
            num,
            CompanyDetailsPage().merchantidvalue)  #获取merchantid
        self.activeweb.outPutMyLog("新建商户id:%s" % merchantid)
        # 保存merchantid
        filename = "merchantid.txt"
        GetTimeStr().writeText(filename, merchantid)
        #断言存在Login account
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().loginaccount,
                                        CompanyDetailsPage().loginaccounttext)
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().loginaccountvalue,
                                        emailinputtext)
        #断言存在Brand name
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().brandname,
                                        CompanyDetailsPage().brandnametext)
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().brandnamevalue,
                                        brandnameinputtext)
        #断言存在agent
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().agent,
                                        CompanyDetailsPage().agentvalue)

        # 详情页存在Merchant info
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().merchantinfo,
                                        CompanyDetailsPage().merchantinfotext)
        #断言存在Merchant type
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().merchanttype,
                                        CompanyDetailsPage().merchanttypetext)
        self.defineassertdetailstextnum(
            num,
            CompanyDetailsPage().merchanttypevalue,
            CompanyDetailsPage().merchanttypevaluetext)
        #断言存在Category
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().category,
                                        CompanyDetailsPage().categorytext)
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().categoryvalue,
                                        CompanyDetailsPage().categoryvaluetext)
        #断言存在Criteria
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().criteria,
                                        CompanyDetailsPage().criteriatext)
        if criteriaselectoptionxpath != None:
            self.defineassertdetailstextnum(
                num,
                CompanyDetailsPage().criteriavalue,
                CompanyDetailsPage().criteriavaluetext)
        #断言存在Province
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().province,
                                        CompanyDetailsPage().provincetext)
        if provinceselectoptionxpath != None:
            self.defineassertdetailstextnum(
                num,
                CompanyDetailsPage().provincevalue,
                CompanyDetailsPage().provincevaluetext)
        #断言存在City
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().city,
                                        CompanyDetailsPage().citytext)
        if cityselectoptionxpath != None:
            self.defineassertdetailstextnum(num,
                                            CompanyDetailsPage().cityvalue,
                                            CompanyDetailsPage().cityvaluetext)
        #断言存在District
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().district,
                                        CompanyDetailsPage().districttext)
        if districtinputtext != None:
            self.defineassertdetailstextnum(num,
                                            CompanyDetailsPage().districtvalue,
                                            districtinputtext)
        #断言存在Village
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().village,
                                        CompanyDetailsPage().villagetext)
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().villagevalue,
                                        villageinputtext)
        #断言存在Address
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().address,
                                        CompanyDetailsPage().addresstext)
        if addressinputtext != None:
            self.defineassertdetailstextnum(num,
                                            CompanyDetailsPage().addressvalue,
                                            addressinputtext)
        #断言存在Postcode
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().postcode,
                                        CompanyDetailsPage().postcodetext)
        if postcodeinputtext != None:
            self.defineassertdetailstextnum(num,
                                            CompanyDetailsPage().postcodevalue,
                                            postcodeinputtext)
        #断言存在Company name
        self.defineassertdetailstextnum(
            num,
            CompanyDetailsPage().companyname,
            CompanyDetailsPage().companynametext)  #公司专有
        if companynameinputtext != None:
            self.defineassertdetailstextnum(
                num,
                CompanyDetailsPage().companynamevalue,
                companynameinputtext)  #公司专有
        #断言存在Official website
        self.defineassertdetailstextnum(
            num,
            CompanyDetailsPage().officialwebsite,
            CompanyDetailsPage().officialwebsitetext)  #公司专有
        if officialwebsiteinputtext != None:
            self.defineassertdetailstextnum(
                num,
                CompanyDetailsPage().officialwebsitevalue,
                officialwebsiteinputtext)  #公司专有
        #断言存在NPWP / TAX ID
        self.defineassertdetailstextnum(
            num,
            CompanyDetailsPage().npwptaxid,
            CompanyDetailsPage().npwptaxidtext)  #公司专有
        if npwptaxidinputtext != None:
            self.defineassertdetailstextnum(
                num,
                CompanyDetailsPage().npwptaxidvalue, npwptaxidinputtext)  #公司专有
        #断言存在Photo NPWP Company
        self.defineassertdetailstextnum(
            num,
            CompanyDetailsPage().photonpwpcompany,
            CompanyDetailsPage().photonpwpcompanytext)
        #断言存在Photo TDP
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().phototdp,
                                        CompanyDetailsPage().phototdptext)

        # 详情页存在Owner/Person in charge info
        self.defineassertdetailstextnum(
            num,
            CompanyDetailsPage().ownerpersoninchangeinfo,
            CompanyDetailsPage().ownerpersoninchangeinfotext)
        #断言存在Name
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().name,
                                        CompanyDetailsPage().nametext)
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().namevalue,
                                        nameinputtext)
        # #断言存在NPWP
        # self.defineassertdetailstextnum(num, CompanyDetailsPage().npwp, CompanyDetailsPage().npwptext)   #个人专有
        # self.defineassertdetailstextnum(num, CompanyDetailsPage().npwpvalue,npwpinputtext)   #个人专有
        # #断言存在ID Type
        # self.defineassertdetailstextnum(num, CompanyDetailsPage().typeid, CompanyDetailsPage().typeidtext)   #个人专有
        # self.defineassertdetailstextnum(num, CompanyDetailsPage().typeidvalue,CompanyDetailsPage().typeidvaluetext)   #个人专有
        # #断言存在Identity number
        # self.defineassertdetailstextnum(num, CompanyDetailsPage().identitynumber, CompanyDetailsPage().identitynumbertext)   #个人专有
        # self.defineassertdetailstextnum(num, CompanyDetailsPage().identitynumbervalue,identitynumberinputtext)   #个人专有
        # #断言存在Nationality
        # self.defineassertdetailstextnum(num, CompanyDetailsPage().nationality, CompanyDetailsPage().nationalitytext)   #个人专有
        # self.defineassertdetailstextnum(num, CompanyDetailsPage().nationalityvalue,CompanyDetailsPage().nationalityvaluetext)   #个人专有
        #断言存在Phone
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().phone,
                                        CompanyDetailsPage().phonetext)
        if phoneinputtext != None:
            self.defineassertdetailstextnum(num,
                                            CompanyDetailsPage().phonevalue,
                                            phoneinputtext)
        #断言存在Email2
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().email2,
                                        CompanyDetailsPage().email2text)
        if email2inputtext != None:
            self.defineassertdetailstextnum(num,
                                            CompanyDetailsPage().email2value,
                                            email2inputtext)
        # #断言存在Address2
        # self.defineassertdetailstextnum(num, CompanyDetailsPage().address2, CompanyDetailsPage().address2text)   #个人专有
        # self.defineassertdetailstextnum(num, CompanyDetailsPage().address2value,address2inputtext)   #个人专有
        #断言存在Position
        self.defineassertdetailstextnum(
            num,
            CompanyDetailsPage().position,
            CompanyDetailsPage().positiontext)  #公司专有
        if positioninputtext != None:
            self.defineassertdetailstextnum(num,
                                            CompanyDetailsPage().positionvalue,
                                            positioninputtext)  #公司专有
        #断言存在Photo PIC Full-faceBust
        self.defineassertdetailstextnum(
            num,
            CompanyDetailsPage().photofullfacebust,
            CompanyDetailsPage().photofullfacebusttext)

        # 详情页存在Profile Photos
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().profilephotos,
                                        CompanyDetailsPage().profilephotostext)
        #断言存在Location Photo
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().locationphoto,
                                        CompanyDetailsPage().locationphototext)
        #断言存在Photo of the cashiers desk
        self.defineassertdetailstextnum(
            num,
            CompanyDetailsPage().photoofthecashiersdesk,
            CompanyDetailsPage().photoofthecashiersdesktext)
        #断言存在Other Photo
        self.defineassertdetailstextnum(num,
                                        CompanyDetailsPage().otherphoto,
                                        CompanyDetailsPage().otherphototext)

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在text:%s" % testtext)

    def defineassertdetailstextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        clicktext = [
            "Merchant info", "Owner / Person in Charge info", "Profile Photos"
        ]
        if expecttext in clicktext:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num, testelexpath)
        self.assertEqual(expecttext, testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在%s中存在text:%s" % (value[int(tablecolnum)], expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在%s不存在:%s" % (tabledic, expecttext))
            self.assertTrue(False)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(
            num,
            isfictitious,
            brandnameinputtext,
            emailinputtext,
            contactnumberinputtext,  #添加公司商户
            merchanttypeselectoptionxpath,
            categoryselectoptionxpath,
            criteriaselectoptionxpath,
            siupinputtext,
            provinceselectoptionxpath,
            cityselectoptionxpath,
            districtinputtext,
            villageinputtext,
            postcodeinputtext,
            addressinputtext,
            companynameinputtext,
            officialwebsiteinputtext,
            npwptaxidinputtext,  # 新加
            photosiupimagefilepath,
            photonpwpcompanyimagefilepath,
            phototdpimagefilepath,  #更换xpath
            nameinputtext,
            positioninputtext,  # 新加
            # npwpinputtext, typeidselectoptionxpath,   #去掉
            # identitynumberinputtext, address2inputtext, nationalityselectoptionxpath,   #去掉
        phoneinputtext,
            email2inputtext,
            photofullfacebustimagefilepath,  #更换
            locationphotoimagefilepath,
            photoofthecashiersdeskimagefilepath,
            otherphotoimagefilepath,
            bankselectoptionxpath,
            accountnameinputtext,
            accountnumberinputtext,
            qrindoaccountinputtext):
        def func(self):
            self.defineaddmerchantcompany(
                num,
                isfictitious,
                brandnameinputtext,
                emailinputtext,
                contactnumberinputtext,  #添加公司商户
                merchanttypeselectoptionxpath,
                categoryselectoptionxpath,
                criteriaselectoptionxpath,
                siupinputtext,
                provinceselectoptionxpath,
                cityselectoptionxpath,
                districtinputtext,
                villageinputtext,
                postcodeinputtext,
                addressinputtext,
                companynameinputtext,
                officialwebsiteinputtext,
                npwptaxidinputtext,  # 新加
                photosiupimagefilepath,
                photonpwpcompanyimagefilepath,
                phototdpimagefilepath,  #更换xpath
                nameinputtext,
                positioninputtext,  # 新加
                # npwpinputtext, typeidselectoptionxpath,   #去掉
                # identitynumberinputtext, address2inputtext, nationalityselectoptionxpath,   #去掉
                phoneinputtext,
                email2inputtext,
                photofullfacebustimagefilepath,
                locationphotoimagefilepath,
                photoofthecashiersdeskimagefilepath,
                otherphotoimagefilepath,
                bankselectoptionxpath,
                accountnameinputtext,
                accountnumberinputtext,
                qrindoaccountinputtext)

        return func
class TestReviseMerchantClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址
        if ISONLINE:
            self.activeweb.findElementByXpathAndInput(
                LoginPage().account, ONLINE_AGENT_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(
                LoginPage().password, ONLINE_AGENT_LOGIN_PASSWORD)
        else:
            self.activeweb.findElementByXpathAndInput(
                LoginPage().account, TEST_AGENT_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(
                LoginPage().password, TEST_AGENT_LOGIN_PASSWORD)

        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = ReviseIndividuMerchantPage()
        self.testpageurl = self.testpage.pageurl  #测试页面url
        self.testpagemerchantinfo = self.testpage.merchantinfo  #Merchant info中 元素
        self.testpagebrandnameinput = self.testpage.brandnameinput
        self.testpageemailinput = self.testpage.emailinput
        self.testpagecontactnumberinput = self.testpage.contactnumberinput
        self.testpagemerchanttypeselect = self.testpage.merchanttypeselect
        self.testpagecategoryselect = self.testpage.categoryselect
        self.testpagecriteriaselect = self.testpage.criteriaselect
        self.testpagesiupinput = self.testpage.siupinput
        self.testpageprovinceselect = self.testpage.provinceselect
        self.testpagecityselect = self.testpage.cityselect
        self.testpagedistrictinput = self.testpage.districtinput
        self.testpagevillageinput = self.testpage.villageinput
        self.testpagepostcodeinput = self.testpage.postcodeinput
        self.testpageaddressinput = self.testpage.addressinput
        self.testpagephotosiupimage = self.testpage.photosiupimage
        self.testpagephotonpwpcompanyimage = self.testpage.photonpwpcompanyimage
        self.testpagephototdpimage = self.testpage.phototdpimage
        self.testpageownerpersoninchargeinfo = self.testpage.ownerpersoninchangeinfo  #Owner / Person in Charge info中 元素
        self.testpagenameinput = self.testpage.nameinput
        self.testpagenpwpinput = self.testpage.npwpinput
        self.testpagetypeidselect = self.testpage.typeidselect
        self.testpageidentitynumberinput = self.testpage.identitynumberinput
        self.testpageaddress2input = self.testpage.address2input
        self.testpagenationalityselect = self.testpage.nationalityselect
        self.testpagephoneinput = self.testpage.phoneinput
        self.testpageemail2input = self.testpage.email2input
        self.testpagephotofullfacebustimage = self.testpage.photofullfacebustimage
        self.testpageprofilephotos = self.testpage.profilephotos  #Profile Photos中 元素
        self.testpagelocationphotoimage = self.testpage.locationphotoimage
        self.testpagephotoofthecashiersdeskimage = self.testpage.photoofthecashiersdeskimage
        self.testpageotherphotoimage = self.testpage.otherphotoimage
        self.testpagebankaccount = self.testpage.bankaccount  #Bank account中 元素
        self.testpagebankselect = self.testpage.bankselect
        self.testpageaccountnameinput = self.testpage.accountnameinput
        self.testpageaccountnumberinput = self.testpage.accountnumberinput
        self.testpageqrindoaccount = self.testpage.qrindoaccount  #QRindo account中 元素
        self.testpageqrindoaccountinput = self.testpage.qrindoaccountinput
        self.testpagecheckbutton = self.testpage.checkbutton
        self.testpagesubmitagainbutton = self.testpage.submitagainbutton
        self.testpageresetbutton = self.testpage.resetbutton
        #pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {
            'name': '.nereus.manager.settle.banks',
            'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'
        }
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义搜索查找函数
    def definerevisemerchantindividu(
            self,
            num,
            isfictitious=False,
            brandnameinputtext=None,
            emailinputtext=None,
            contactnumberinputtext=None,  #添加个人商户
            merchanttypeselectoptionxpath=None,
            categoryselectoptionxpath=None,
            criteriaselectoptionxpath=None,
            siupinputtext=None,
            provinceselectoptionxpath=None,
            cityselectoptionxpath=None,
            districtinputtext=None,
            villageinputtext=None,
            postcodeinputtext=None,
            addressinputtext=None,
            photosiupimagefilepath=None,
            photonpwpcompanyimagefilepath=None,
            phototdpimagefilepath=None,
            nameinputtext=None,
            npwpinputtext=None,
            typeidselectoptionxpath=None,
            identitynumberinputtext=None,
            address2inputtext=None,
            nationalityselectoptionxpath=None,
            phoneinputtext=None,
            email2inputtext=None,
            photofullfacebustimagefilepath=None,
            locationphotoimagefilepath=None,
            photoofthecashiersdeskimagefilepath=None,
            otherphotoimagefilepath=None,
            bankselectoptionxpath=None,
            accountnameinputtext=None,
            accountnumberinputtext=None,
            qrindoaccountinputtext=None):
        # self.activeweb.writerCookies(self.cookie, LoginPage().pageurl,MerchantListPage().pageurl)
        if isfictitious:
            self.writexunicookie()
        # self.activeweb.delayTime(5000)
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)

        #添加个人商户
        #添加Basic info信息
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageemailinput, emailinputtext)  # 输入Email,必填字段
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagebrandnameinput,
            brandnameinputtext)  #输入Brand name,必填字段

        #添加Merchant info信息
        # self.activeweb.findElementByXpathAndInputNum(num,self.testpagecontactnumberinput, contactnumberinputtext)   #输入Contact number
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagemerchanttypeselect,
            merchanttypeselectoptionxpath)  # 选择Merchant type,必填字段
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagecategoryselect,
            categoryselectoptionxpath)  # 选择Category,必填字段
        if criteriaselectoptionxpath != None:
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagecriteriaselect,
                criteriaselectoptionxpath)  # 选择Criteria,选填字段

        if provinceselectoptionxpath != None:
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpageprovinceselect,
                provinceselectoptionxpath)  # 选择Province,选填字段
        if cityselectoptionxpath != None:
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagecityselect,
                cityselectoptionxpath)  # 选择City,选填字段
        if districtinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagedistrictinput,
                districtinputtext)  # 输入District,选填字段
        if villageinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagevillageinput,
                villageinputtext)  # 输入Village,选填字段
        if postcodeinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagepostcodeinput,
                postcodeinputtext)  # 输入Postcode,选填字段
        if addressinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpageaddressinput,
                addressinputtext)  # 输入Address,选填字段
        if photonpwpcompanyimagefilepath != None:
            self.activeweb.findElementByXpathAndAndFileNumVue(
                num, self.testpagephotonpwpcompanyimage,
                photonpwpcompanyimagefilepath)  # 添加Photo NPWP Company图片,选填字段
        if phototdpimagefilepath != None:
            self.activeweb.findElementByXpathAndAndFileNumVue(
                num, self.testpagephototdpimage,
                phototdpimagefilepath)  # 添加Photo TDP图片,选填字段

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpagemerchantinfo)  #点击Merchant info
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageownerpersoninchargeinfo
        )  # 点击Owner / Person in Charge info

        #添加Owner / Person in Charge info信息
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagenameinput, nameinputtext)  # 输入Name,必填字段
        if npwpinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagenpwpinput, npwpinputtext)  # 输入NPWP,选填字段
        if typeidselectoptionxpath != None:
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagetypeidselect,
                typeidselectoptionxpath)  # 选择ID Type,选填字段
        if identitynumberinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpageidentitynumberinput,
                identitynumberinputtext)  # 输入Identity number,选填字段
        if address2inputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpageaddress2input,
                address2inputtext)  # 输入Address,选填字段
        if nationalityselectoptionxpath != None:
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagenationalityselect,
                nationalityselectoptionxpath)  # 选择Nationality,选填字段
        if phoneinputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpagephoneinput, phoneinputtext)  # 输入Phone,选填字段
        if email2inputtext != None:
            self.activeweb.findElementByXpathAndInputNum(
                num, self.testpageemail2input, email2inputtext)  # 输入Email,选填字段
        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpagephotofullfacebustimage,
            photofullfacebustimagefilepath)  # 添加Photo Full-faceBust图片,必填字段

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageownerpersoninchargeinfo
        )  # 点击Owner / Person in Charge info
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageprofilephotos)  # 点击Profile Photos

        #添加Profile Photos信息
        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpagelocationphotoimage,
            locationphotoimagefilepath)  # 添加Location Photo图片,必填字段
        if photoofthecashiersdeskimagefilepath != None:
            self.activeweb.findElementByXpathAndAndFileNumVue(
                num, self.testpagephotoofthecashiersdeskimage,
                photoofthecashiersdeskimagefilepath
            )  # 添加Photo of the cashiers desk图片,选填字段
        if otherphotoimagefilepath != None:
            self.activeweb.findElementByXpathAndAndFileNumVue(
                num, self.testpageotherphotoimage,
                otherphotoimagefilepath)  # 添加Other Photo图片,选填字段

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageprofilephotos)  # 点击Profile Photos
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpagebankaccount)  # 点击Bank account

        #添加Bank account信息
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagebankselect, bankselectoptionxpath)  # 选择Bank,必填字段
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageaccountnameinput,
            accountnameinputtext)  # 输入Account name,必填字段
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageaccountnumberinput,
            accountnumberinputtext)  # 输入Account number,必填字段

        #点击Submit again按钮
        self.activeweb.findElementByXpathAndClickNum(
            num, self.testpagesubmitagainbutton)  # 点击submit again按钮
        # self.activeweb.findElementByXpathAndClickNum(num,self.testpageresetbutton)  # 点击reset按钮
        #断言是否有“Success”
        # self.defineasserttextnum(num,AddMerchantSuccessPage().successindividu,AddMerchantSuccessPage().successtext)
        # self.activeweb.findElementByXpathAndClickNum(num,AddMerchantSuccessPage().okbuttonindividu)

        #断言是否有“Done”
        self.defineasserttextnum(num,
                                 AddMerchantDonePage().done,
                                 AddMerchantDonePage().donetext)
        # 断言是否有“Waiting for approval”
        self.defineasserttextnum(num,
                                 AddMerchantDonePage().waitingforapproval,
                                 AddMerchantDonePage().waitingforapprovaltext)
        # 断言是否有brandnameinputtext(添加的商户名)
        self.defineasserttextnum(num,
                                 AddMerchantDonePage().merchantnamevalue,
                                 brandnameinputtext)
        #点击Done页面的Merchant list按钮
        self.activeweb.findElementByXpathAndClickNum(
            num,
            AddMerchantDonePage().merchantlistbutton)

        #断言商户列表中是否有新增加的商户名
        self.defineisintable(num,
                             MerchantListPage().searchtableresult,
                             brandnameinputtext, 1)
        # self.activeweb.delayTime(1000)
        #点击商户列表新建商户的Detail进入商户详情页;
        self.activeweb.findElementByXpathAndClickNum(
            num,
            MerchantListPage().operation_waitingforreview_details)

        #断言详情页中的内容
        #详情页存在Basic info
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().basicinfo,
                                        IndividuDetailsPage().basicinfotext)
        #断言存在Merchant ID
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().merchantid,
                                        IndividuDetailsPage().merchantidtext)
        merchantid = self.activeweb.findElementByXpathAndReturnText(
            num,
            IndividuDetailsPage().merchantidvalue)  #获取merchantid
        self.activeweb.outPutMyLog("新建商户id:%s" % merchantid)
        # 保存merchantid
        filename = "merchantid.txt"
        GetTimeStr().writeText(filename, merchantid)
        #断言存在Login account
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().loginaccount,
                                        IndividuDetailsPage().loginaccounttext)
        self.defineassertdetailstextnum(
            num,
            IndividuDetailsPage().loginaccountvalue, emailinputtext)
        #断言存在Brand name
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().brandname,
                                        IndividuDetailsPage().brandnametext)
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().brandnamevalue,
                                        brandnameinputtext)
        #断言存在agent
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().agent,
                                        IndividuDetailsPage().agentvalue)

        # 详情页存在Merchant info
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().merchantinfo,
                                        IndividuDetailsPage().merchantinfotext)
        #断言存在Merchant type
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().merchanttype,
                                        IndividuDetailsPage().merchanttypetext)
        self.defineassertdetailstextnum(
            num,
            IndividuDetailsPage().merchanttypevalue,
            IndividuDetailsPage().merchanttypevaluetext)
        #断言存在Category
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().category,
                                        IndividuDetailsPage().categorytext)
        self.defineassertdetailstextnum(
            num,
            IndividuDetailsPage().categoryvalue,
            IndividuDetailsPage().categoryvaluetext)
        #断言存在Criteria
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().criteria,
                                        IndividuDetailsPage().criteriatext)
        if criteriaselectoptionxpath != None:
            self.defineassertdetailstextnum(
                num,
                IndividuDetailsPage().criteriavalue,
                IndividuDetailsPage().criteriavaluetext)
        #断言存在Province
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().province,
                                        IndividuDetailsPage().provincetext)
        if provinceselectoptionxpath != None:
            self.defineassertdetailstextnum(
                num,
                IndividuDetailsPage().provincevalue,
                IndividuDetailsPage().provincevaluetext)
        #断言存在City
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().city,
                                        IndividuDetailsPage().citytext)
        if cityselectoptionxpath != None:
            self.defineassertdetailstextnum(
                num,
                IndividuDetailsPage().cityvalue,
                IndividuDetailsPage().cityvaluetext)
        #断言存在District
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().district,
                                        IndividuDetailsPage().districttext)
        if districtinputtext != None:
            self.defineassertdetailstextnum(
                num,
                IndividuDetailsPage().districtvalue, districtinputtext)
        #断言存在Village
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().village,
                                        IndividuDetailsPage().villagetext)
        if villageinputtext != None:
            self.defineassertdetailstextnum(num,
                                            IndividuDetailsPage().villagevalue,
                                            villageinputtext)
        #断言存在Address
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().address,
                                        IndividuDetailsPage().addresstext)
        if addressinputtext != None:
            self.defineassertdetailstextnum(num,
                                            IndividuDetailsPage().addressvalue,
                                            addressinputtext)
        #断言存在Postcode
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().postcode,
                                        IndividuDetailsPage().postcodetext)
        if postcodeinputtext != None:
            self.defineassertdetailstextnum(
                num,
                IndividuDetailsPage().postcodevalue, postcodeinputtext)
        #断言存在Photo NPWP Company
        self.defineassertdetailstextnum(
            num,
            IndividuDetailsPage().photonpwpcompany,
            IndividuDetailsPage().photonpwpcompanytext)
        #断言存在Photo TDP
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().phototdp,
                                        IndividuDetailsPage().phototdptext)

        # 详情页存在Owner/Person in charge info
        self.defineassertdetailstextnum(
            num,
            IndividuDetailsPage().ownerpersoninchangeinfo,
            IndividuDetailsPage().ownerpersoninchangeinfotext)
        #断言存在Name
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().name,
                                        IndividuDetailsPage().nametext)
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().namevalue,
                                        nameinputtext)
        #断言存在NPWP
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().npwp,
                                        IndividuDetailsPage().npwptext)
        if npwpinputtext != None:
            self.defineassertdetailstextnum(num,
                                            IndividuDetailsPage().npwpvalue,
                                            npwpinputtext)
        #断言存在ID Type
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().typeid,
                                        IndividuDetailsPage().typeidtext)
        if typeidselectoptionxpath != None:
            self.defineassertdetailstextnum(
                num,
                IndividuDetailsPage().typeidvalue,
                IndividuDetailsPage().typeidvaluetext)
        #断言存在Identity number
        self.defineassertdetailstextnum(
            num,
            IndividuDetailsPage().identitynumber,
            IndividuDetailsPage().identitynumbertext)
        if identitynumberinputtext != None:
            self.defineassertdetailstextnum(
                num,
                IndividuDetailsPage().identitynumbervalue,
                identitynumberinputtext)
        #断言存在Nationality
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().nationality,
                                        IndividuDetailsPage().nationalitytext)
        if nationalityselectoptionxpath != None:
            self.defineassertdetailstextnum(
                num,
                IndividuDetailsPage().nationalityvalue,
                IndividuDetailsPage().nationalityvaluetext)
        #断言存在Phone
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().phone,
                                        IndividuDetailsPage().phonetext)
        if phoneinputtext != None:
            self.defineassertdetailstextnum(num,
                                            IndividuDetailsPage().phonevalue,
                                            phoneinputtext)
        #断言存在Email2
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().email2,
                                        IndividuDetailsPage().email2text)
        if email2inputtext != None:
            self.defineassertdetailstextnum(num,
                                            IndividuDetailsPage().email2value,
                                            email2inputtext)
        #断言存在Address2
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().address2,
                                        IndividuDetailsPage().address2text)
        if address2inputtext != None:
            self.defineassertdetailstextnum(
                num,
                IndividuDetailsPage().address2value, address2inputtext)
        #断言存在Photo PIC Full-faceBust
        self.defineassertdetailstextnum(
            num,
            IndividuDetailsPage().photofullfacebust,
            IndividuDetailsPage().photofullfacebusttext)

        # 详情页存在Profile Photos
        self.defineassertdetailstextnum(
            num,
            IndividuDetailsPage().profilephotos,
            IndividuDetailsPage().profilephotostext)
        #断言存在Location Photo
        self.defineassertdetailstextnum(
            num,
            IndividuDetailsPage().locationphoto,
            IndividuDetailsPage().locationphototext)
        #断言存在Photo of the cashiers desk
        self.defineassertdetailstextnum(
            num,
            IndividuDetailsPage().photoofthecashiersdesk,
            IndividuDetailsPage().photoofthecashiersdesktext)
        #断言存在Other Photo
        self.defineassertdetailstextnum(num,
                                        IndividuDetailsPage().otherphoto,
                                        IndividuDetailsPage().otherphototext)

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在text:%s" % testtext)

    def defineassertdetailstextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        clicktext = [
            "Merchant info", "Owner / Person in Charge info", "Profile Photos"
        ]
        if expecttext in clicktext:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num, testelexpath)
        self.assertEqual(expecttext, testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在%s中存在text:%s" % (value[int(tablecolnum)], expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在%s不存在:%s" % (tabledic, expecttext))
            self.assertTrue(False)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(
            num,
            isfictitious,
            brandnameinputtext,
            emailinputtext,
            contactnumberinputtext,  #添加个人商户
            merchanttypeselectoptionxpath,
            categoryselectoptionxpath,
            criteriaselectoptionxpath,
            siupinputtext,
            provinceselectoptionxpath,
            cityselectoptionxpath,
            districtinputtext,
            villageinputtext,
            postcodeinputtext,
            addressinputtext,
            photosiupimagefilepath,
            photonpwpcompanyimagefilepath,
            phototdpimagefilepath,
            nameinputtext,
            npwpinputtext,
            typeidselectoptionxpath,
            identitynumberinputtext,
            address2inputtext,
            nationalityselectoptionxpath,
            phoneinputtext,
            email2inputtext,
            photofullfacebustimagefilepath,
            locationphotoimagefilepath,
            photoofthecashiersdeskimagefilepath,
            otherphotoimagefilepath,
            bankselectoptionxpath,
            accountnameinputtext,
            accountnumberinputtext,
            qrindoaccountinputtext):
        def func(self):
            self.definerevisemerchantindividu(
                num,
                isfictitious,
                brandnameinputtext,
                emailinputtext,
                contactnumberinputtext,  #添加个人商户
                merchanttypeselectoptionxpath,
                categoryselectoptionxpath,
                criteriaselectoptionxpath,
                siupinputtext,
                provinceselectoptionxpath,
                cityselectoptionxpath,
                districtinputtext,
                villageinputtext,
                postcodeinputtext,
                addressinputtext,
                photosiupimagefilepath,
                photonpwpcompanyimagefilepath,
                phototdpimagefilepath,
                nameinputtext,
                npwpinputtext,
                typeidselectoptionxpath,
                identitynumberinputtext,
                address2inputtext,
                nationalityselectoptionxpath,
                phoneinputtext,
                email2inputtext,
                photofullfacebustimagefilepath,
                locationphotoimagefilepath,
                photoofthecashiersdeskimagefilepath,
                otherphotoimagefilepath,
                bankselectoptionxpath,
                accountnameinputtext,
                accountnumberinputtext,
                qrindoaccountinputtext)

        return func
예제 #7
0
class TestReviseClass(unittest.TestCase):  # 创建测试类


    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # cls.activeweb = ActiveWeb()  # 实例化
        # cls.loginurl = LoginPage().pageurl
        # cls.activeweb.getUrl(cls.loginurl)  # 打开网址
        # cls.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT)
        # cls.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD)
        # cls.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        # cls.activeweb.delayTime(3)
        # cls.testpage = RevisePage()
        # cls.testpageurl =cls.testpage.pageurl   #测试页面url
        # cls.activeweb.getUrl(cls.testpageurl)
        # cls.activeweb.delayTime(3)

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        # cls.activeweb.closeBrowse()
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址
        self.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT)
        self.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD)
        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = RevisePage()
        self.testpageurl =self.testpage.pageurl   #测试页面url
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)
        pass


    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        pass

    def defineclicksubmitagain(self,num):

        revisemerchantname = self.activeweb.findElementByXpathAndReturnValueNum(num,self.testpage.brandnameinput,"value")
        self.activeweb.findElementByXpathAndScriptClickNum(num,self.testpage.merchantinfo)
        self.activeweb.findElementByXpathAndScriptClickNum(num,self.testpage.submitagainbutton)
        #断言是否有“Success”
        self.defineasserttextnum(num,AddMerchantSuccessPage().successindividu,AddMerchantSuccessPage().successtext)
        self.activeweb.findElementByXpathAndClickNum(num,AddMerchantSuccessPage().okbuttonindividu)

        #断言是否有“Done”
        self.defineasserttextnum(num, AddMerchantDonePage().done, AddMerchantDonePage().donetext)

        # 断言是否有“Waiting for approval”
        self.defineasserttextnum(num, AddMerchantDonePage().waitingforapproval, AddMerchantDonePage().waitingforapprovaltext)

        # 断言是否有brandnameinputtext(添加的商户名)
        self.defineasserttextnum(num, AddMerchantDonePage().merchantnamevalue, revisemerchantname)

        self.activeweb.findElementByXpathAndClickNum(num,AddMerchantDonePage().merchantlistbutton)
        # #断言商户列表中是否有新增加的商户名
        # self.defineisintable(num,MerchantListPage().searchtableresult,revisemerchantname,1)

        #断言商户列表中Revise的商户的状态发生变化,右Revise变成Details
        revisemerchantname = "test_individu_20190415141440"
        self.definesearch(num,
                          MerchantListPage().keywordselectxpath,
                          MerchantListPage().keywordoption_merchantname_xpath,
                          MerchantListPage().keywordselectinputxpath,
                          revisemerchantname,
                          True,
                          6,
                          "Details")
        # self.activeweb.delayTime(1000)

    def defineasserttextnum(self,num,testelexpath,expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(num,testelexpath)
        self.assertEqual(expecttext,testtext)
        self.activeweb.outPutMyLog("存在文本信息:%s"%testtext)

    def defineisintable(self,num,testtablexpath,expecttext,tablecolnum):
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(num, testtablexpath)
        for value in tabledic.values():
            self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog("在%s中存在文本信息:%s"% (value[int(tablecolnum)],expecttext))
                break
            else:
                self.activeweb.outPutMyLog("在%s不存在文本信息:%s"% (value[int(tablecolnum)],expecttext))
                self.assertTrue(False)

    #定义搜索查找函数
    def definesearch(self,num,selectxpath=None,selectoptiontextxpath=None,selectinputxpath=None,selectinputtext=None,isfind=False,colnum=None,checktext=None):

        if selectxpath !=None and selectoptiontextxpath !=None:
            self.activeweb.findElementByXpathAndScriptClick(selectxpath)
            self.activeweb.findElementByXpathAndScriptClick(selectoptiontextxpath)

        if selectinputxpath != None and selectinputtext !=None:
            self.activeweb.findElementByXpathAndInput(selectinputxpath,str(selectinputtext))
        self.activeweb.findElementByXpathAndClick(MerchantListPage().searchbutton)
        self.activeweb.delayTime(5)
        if isfind:
            tabledic = self.activeweb.findElementByXpathAndReturnTableNum(num,MerchantListPage().searchtableresult)
        else:
            tabledic = self.activeweb.findElementByXpathAndReturnTableNum(num, MerchantListPage().searchtableresult2)

        for value in tabledic.values():
            if str(checktext).lower() in value[int(colnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog("在%s中存在文本信息:%s"% (value[int(colnum)],checktext))
                break
            else:
                self.activeweb.outPutMyLog("在%s不存在文本信息:%s"% (value[int(colnum)],checktext))
                self.assertTrue(False)

    @staticmethod    #根据不同的参数生成测试用例
    def getTestFunc( num):
        def func(self):
            self.defineclicksubmitagain(num)
        return func
예제 #8
0
class TestAddMerchantClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址
        self.activeweb.findElementByXpathAndInput(LoginPage().account,
                                                  AGENT_LOGIN_ACCOUNT)
        self.activeweb.findElementByXpathAndInput(LoginPage().password,
                                                  AGENT_LOGIN_PASSWORD)
        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = AddMerchantPage()
        self.testpageurl = self.testpage.pageurl  #测试页面url
        self.testpagemerchantinfo = self.testpage.merchantinfo  #Merchant info中 元素
        self.testpagebrandnameinput = self.testpage.brandnameinput
        self.testpageemailinput = self.testpage.emailinput
        self.testpagecontactnumberinput = self.testpage.contactnumberinput
        self.testpagemerchanttypeselect = self.testpage.merchanttypeselect
        self.testpagecategoryselect = self.testpage.categoryselect
        self.testpagecriteriaselect = self.testpage.criteriaselect
        self.testpagesiupinput = self.testpage.siupinput
        self.testpageprovinceselect = self.testpage.provinceselect
        self.testpagecityselect = self.testpage.cityselect
        self.testpagedistrictinput = self.testpage.districtinput
        self.testpagevillageinput = self.testpage.villageinput
        self.testpagepostcodeinput = self.testpage.postcodeinput
        self.testpageaddressinput = self.testpage.addressinput
        self.testpagephotosiupimage = self.testpage.photosiupimage
        self.testpagephotonpwpcompanyimage = self.testpage.photonpwpcompanyimage
        self.testpagephototdpimage = self.testpage.phototdpimage
        self.testpageownerpersoninchargeinfo = self.testpage.ownerpersoninchangeinfo  #Owner / Person in Charge info中 元素
        self.testpagenameinput = self.testpage.nameinput
        self.testpagenpwpinput = self.testpage.npwpinput
        self.testpagetypeidselect = self.testpage.typeidselect
        self.testpageidentitynumberinput = self.testpage.identitynumberinput
        self.testpageaddress2input = self.testpage.address2input
        self.testpagenationalityselect = self.testpage.nationalityselect
        self.testpagephoneinput = self.testpage.phoneinput
        self.testpageemail2input = self.testpage.email2input
        self.testpagephotofullfacebustimage = self.testpage.photofullfacebustimage
        self.testpageprofilephotos = self.testpage.profilephotos  #Profile Photos中 元素
        self.testpagelocationphotoimage = self.testpage.locationphotoimage
        self.testpagephotoofthecashiersdeskimage = self.testpage.photoofthecashiersdeskimage
        self.testpageotherphotoimage = self.testpage.otherphotoimage
        self.testpagebankaccount = self.testpage.bankaccount  #Bank account中 元素
        self.testpagebankselect = self.testpage.bankselect
        self.testpageaccountnameinput = self.testpage.accountnameinput
        self.testpageaccountnumberinput = self.testpage.accountnumberinput
        self.testpageqrindoaccount = self.testpage.qrindoaccount  #QRindo account中 元素
        self.testpageqrindoaccountinput = self.testpage.qrindoaccountinput
        self.testpagecheckbutton = self.testpage.checkbutton
        self.testpagesubmitbutton = self.testpage.submitbutton
        self.testpageresetbutton = self.testpage.resetbutton
        #pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {
            'name': '.nereus.manager.settle.banks',
            'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'
        }
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义搜索查找函数
    def defineaddmerchantindividu(
            self,
            num,
            isfictitious=False,
            brandnameinputtext=None,
            emailinputtext=None,
            contactnumberinputtext=None,  #添加个人商户
            merchanttypeselectoptionxpath=None,
            categoryselectoptionxpath=None,
            criteriaselectoptionxpath=None,
            siupinputtext=None,
            provinceselectoptionxpath=None,
            cityselectoptionxpath=None,
            districtinputtext=None,
            villageinputtext=None,
            postcodeinputtext=None,
            addressinputtext=None,
            photosiupimagefilepath=None,
            photonpwpcompanyimagefilepath=None,
            phototdpimagefilepath=None,
            nameinputtext=None,
            npwpinputtext=None,
            typeidselectoptionxpath=None,
            identitynumberinputtext=None,
            address2inputtext=None,
            nationalityselectoptionxpath=None,
            phoneinputtext=None,
            email2inputtext=None,
            photofullfacebustimagefilepath=None,
            locationphotoimagefilepath=None,
            photoofthecashiersdeskimagefilepath=None,
            otherphotoimagefilepath=None,
            bankselectoptionxpath=None,
            accountnameinputtext=None,
            accountnumberinputtext=None,
            qrindoaccountinputtext=None):
        # self.activeweb.writerCookies(self.cookie, LoginPage().pageurl,MerchantListPage().pageurl)
        if isfictitious:
            self.writexunicookie()
        # self.activeweb.delayTime(5000)
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)

        #添加个人商户
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagebrandnameinput,
            brandnameinputtext)  #输入Brand name
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpageemailinput,
                                                     emailinputtext)  #输入Email
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagecontactnumberinput,
            contactnumberinputtext)  #输入Contact number
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagemerchanttypeselect,
            merchanttypeselectoptionxpath)  # 选择Merchant type
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagecategoryselect,
            categoryselectoptionxpath)  # 选择Category
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagecriteriaselect,
            criteriaselectoptionxpath)  # 选择Criteria
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpagesiupinput,
                                                     siupinputtext)  # 输入SIUP
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpageprovinceselect,
            provinceselectoptionxpath)  # 选择Province
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagecityselect, cityselectoptionxpath)  # 选择City
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagedistrictinput, districtinputtext)  # 输入District
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagevillageinput, villageinputtext)  # 输入Village
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagepostcodeinput, postcodeinputtext)  # 输入Postcode
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageaddressinput, addressinputtext)  # 输入Address
        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpagephotosiupimage,
            photosiupimagefilepath)  #添加Photo SIUP图片
        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpagephotonpwpcompanyimage,
            photonpwpcompanyimagefilepath)  # 添加Photo NPWP Company图片
        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpagephototdpimage,
            phototdpimagefilepath)  # 添加Photo TDP图片

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpagemerchantinfo)  #点击Merchant info
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageownerpersoninchargeinfo
        )  # 点击Owner / Person in Charge info

        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpagenameinput,
                                                     nameinputtext)  # 输入Name
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpagenpwpinput,
                                                     npwpinputtext)  # 输入NPWP
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagetypeidselect,
            typeidselectoptionxpath)  # 选择Type ID
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageidentitynumberinput,
            identitynumberinputtext)  # 输入Identity number
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageaddress2input, address2inputtext)  # 输入Address
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagenationalityselect,
            nationalityselectoptionxpath)  # 选择Nationality
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpagephoneinput,
                                                     phoneinputtext)  # 输入Phone
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageemail2input, email2inputtext)  # 输入Email
        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpagephotofullfacebustimage,
            photofullfacebustimagefilepath)  # 添加Photo Full-faceBust图片

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageownerpersoninchargeinfo
        )  # 点击Owner / Person in Charge info
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageprofilephotos)  # 点击Profile Photos

        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpagelocationphotoimage,
            locationphotoimagefilepath)  # 添加Location Photo图片
        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpagephotoofthecashiersdeskimage,
            photoofthecashiersdeskimagefilepath
        )  # 添加Photo of the cashiers desk图片
        self.activeweb.findElementByXpathAndAndFileNumVue(
            num, self.testpageotherphotoimage,
            otherphotoimagefilepath)  # 添加Other Photo图片

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageprofilephotos)  # 点击Profile Photos
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpagebankaccount)  # 点击Bank account

        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagebankselect, bankselectoptionxpath)  # 选择Bank
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageaccountnameinput,
            accountnameinputtext)  # 输入Account name
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageaccountnumberinput,
            accountnumberinputtext)  # 输入Account number

        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpagebankaccount)  # 点击Bank account
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpageqrindoaccount)  # 点击QRindo account

        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpageqrindoaccountinput,
            AGENT_LOGIN_ACCOUNT)  # 输入QRindo account
        self.activeweb.findElementByXpathAndClickNum(
            num, self.testpagecheckbutton)  #点击check按钮

        self.activeweb.findElementByXpathAndClickNum(
            num, self.testpagesubmitbutton)  # 点击submit按钮

        # self.activeweb.findElementByXpathAndClickNum(num,self.testpageresetbutton)  # 点击reset按钮
        #断言是否有“Success”
        # self.defineasserttextnum(num,AddMerchantSuccessPage().successindividu,AddMerchantSuccessPage().successtext)
        # self.activeweb.findElementByXpathAndClickNum(num,AddMerchantSuccessPage().okbuttonindividu)

        #断言是否有“Done”
        self.defineasserttextnum(num,
                                 AddMerchantDonePage().done,
                                 AddMerchantDonePage().donetext)

        # 断言是否有“Waiting for approval”
        self.defineasserttextnum(num,
                                 AddMerchantDonePage().waitingforapproval,
                                 AddMerchantDonePage().waitingforapprovaltext)

        # 断言是否有brandnameinputtext(添加的商户名)
        self.defineasserttextnum(num,
                                 AddMerchantDonePage().merchantnamevalue,
                                 brandnameinputtext)

        self.activeweb.findElementByXpathAndClickNum(
            num,
            AddMerchantDonePage().merchantlistbutton)
        #断言商户列表中是否有新增加的商户名
        self.defineisintable(num,
                             MerchantListPage().searchtableresult,
                             brandnameinputtext, 1)
        # self.activeweb.delayTime(1000)

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在text:%s" % testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在%s中存在text:%s" % (value[int(tablecolnum)], expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在%s不存在:%s" % (tabledic, expecttext))
            self.assertTrue(False)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(
            num,
            isfictitious,
            brandnameinputtext,
            emailinputtext,
            contactnumberinputtext,  #添加个人商户
            merchanttypeselectoptionxpath,
            categoryselectoptionxpath,
            criteriaselectoptionxpath,
            siupinputtext,
            provinceselectoptionxpath,
            cityselectoptionxpath,
            districtinputtext,
            villageinputtext,
            postcodeinputtext,
            addressinputtext,
            photosiupimagefilepath,
            photonpwpcompanyimagefilepath,
            phototdpimagefilepath,
            nameinputtext,
            npwpinputtext,
            typeidselectoptionxpath,
            identitynumberinputtext,
            address2inputtext,
            nationalityselectoptionxpath,
            phoneinputtext,
            email2inputtext,
            photofullfacebustimagefilepath,
            locationphotoimagefilepath,
            photoofthecashiersdeskimagefilepath,
            otherphotoimagefilepath,
            bankselectoptionxpath,
            accountnameinputtext,
            accountnumberinputtext,
            qrindoaccountinputtext):
        def func(self):
            self.defineaddmerchantindividu(
                num,
                isfictitious,
                brandnameinputtext,
                emailinputtext,
                contactnumberinputtext,  #添加个人商户
                merchanttypeselectoptionxpath,
                categoryselectoptionxpath,
                criteriaselectoptionxpath,
                siupinputtext,
                provinceselectoptionxpath,
                cityselectoptionxpath,
                districtinputtext,
                villageinputtext,
                postcodeinputtext,
                addressinputtext,
                photosiupimagefilepath,
                photonpwpcompanyimagefilepath,
                phototdpimagefilepath,
                nameinputtext,
                npwpinputtext,
                typeidselectoptionxpath,
                identitynumberinputtext,
                address2inputtext,
                nationalityselectoptionxpath,
                phoneinputtext,
                email2inputtext,
                photofullfacebustimagefilepath,
                locationphotoimagefilepath,
                photoofthecashiersdeskimagefilepath,
                otherphotoimagefilepath,
                bankselectoptionxpath,
                accountnameinputtext,
                accountnumberinputtext,
                qrindoaccountinputtext)

        return func
예제 #9
0
class TestLoginClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activeweb = ActiveWeb()  # 实例化
        self.loginpage = LoginPage()  # 实例化
        self.activeweb.getUrl(self.loginpage.pageurl)  # 打开网址
        pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        pass

    # 定义登录函数
    def definelogin(self,
                    num,
                    accountinput=None,
                    passwordinput=None,
                    vercodeinput=None,
                    assertaccounttiptext=None,
                    assertpasswordtiptext=None,
                    assertvercodetiptext=None,
                    assertlogintiptext=None):
        #1.进入登录页面
        #2.点击登录按钮
        #3.查看提示(输入框下方提示)
        if accountinput != None:
            self.activeweb.findElementByXpathAndInput(
                path=self.loginpage.account, inputcontent=accountinput)  #输入账号
        if passwordinput != None:
            self.activeweb.findElementByXpathAndInput(
                path=self.loginpage.password,
                inputcontent=passwordinput)  # 输入密码

        self.activeweb.findElementByXpathAndClick(
            self.loginpage.loginbutton)  #单击登录按钮

        #验证账号弹框下提示内容
        if assertaccounttiptext != None:
            truetext = self.activeweb.findElementByXpathAndReturnText(
                num=num, path=self.loginpage.accounttip)
            self.assertEqual(assertaccounttiptext, truetext)

        # 验证密码弹框下提示内容
        if assertpasswordtiptext != None:
            truetext = self.activeweb.findElementByXpathAndReturnText(
                num=num, path=self.loginpage.passwordtip)
            self.assertEqual(assertpasswordtiptext, truetext)

        # 验证验证码弹框下提示内容
        if assertvercodetiptext != None:
            if vercodeinput != None:
                self.activeweb.findElementByXpathAndInput(
                    path=self.loginpage.vercode,
                    inputcontent=vercodeinput)  # 输入验证码
            # print("验证码预期提示内容:%s" % assertvercodetiptext)
            self.activeweb.findElementByXpathAndClick(
                self.loginpage.loginbutton2)  # 单击登录按钮
            truetext = self.activeweb.findElementByXpathAndReturnText(
                num=num, path=self.loginpage.vercodetip)
            self.assertEqual(assertvercodetiptext, truetext)

        # 验证点击登录按钮后,服务端返回的提示内容
        if assertlogintiptext != None:
            if vercodeinput != None:
                self.activeweb.findElementByXpathAndInput(
                    path=self.loginpage.vercode,
                    inputcontent=vercodeinput)  # 输入验证码
                self.activeweb.findElementByXpathAndClick(
                    self.loginpage.loginbutton2)  # 单击登录按钮

            truetext = self.activeweb.findElementByXpathAndReturnText(
                num=num, path=self.loginpage.logintip)
            self.assertEqual(assertlogintiptext, truetext)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, accountinput, passwordinput, vercodeinput,
                    assertaccounttiptext, assertpasswordtiptext,
                    assertvercodetiptext, assertlogintiptext):
        def func(self):
            self.definelogin(num, accountinput, passwordinput, vercodeinput,
                             assertaccounttiptext, assertpasswordtiptext,
                             assertvercodetiptext, assertlogintiptext)

        return func
예제 #10
0
class TestStatusCheckClass(unittest.TestCase):  # 创建测试类


    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass


    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址
        self.activeweb.findElementByXpathAndInput(LoginPage().account,MANAGER_LOGIN_ACCOUNT)
        self.activeweb.findElementByXpathAndInput(LoginPage().password,MANAGER_LOGIN_PASSWORD)
        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.DSX = "nereus/marketing/admin/v/#/activityManage/missionAct/modifyOnLine"
        self.JXZ = "nereus/marketing/admin/v/#/activityManage/missionAct/modifyOffLine"
        self.DETAIL = "nereus/marketing/admin/v/#/activityManage/missionAct/missionDetail"





        #pass


    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {'name': '.nereus.manager.settle.banks', 'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'}
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义创建活动,
    #投放渠道一级为1表示内部渠道,为2表示外部渠道
    #投放渠道二级为0表示全选,为1,2,等表示选一项和选多项组合,程序中只有全选和选择一项的情况
    # 任务类型为1表示注册,为2表示交易类型
    #奖励类型1表示固定奖励
    def definestatuscheck(self,num,
                          firsturl,secondurl,
                             isstatus,istype,type):
        #加载一个待上线的运营活动编辑页路径
        # firsturl = "https://bjw.halodigit.com:9060/nereus/marketing/admin/v/#/activityManage/missionAct/modifyOnLine/%s"
        self.activeweb.getUrl(firsturl)
        self.activeweb.delayTime(6)

        #加载一个进行中的运营活动的ID
        # secondurl = "https://bjw.halodigit.com:9060/nereus/marketing/admin/v/#/activityManage/missionAct/modifyOnLine/%s"

        self.activeweb.getUrl(secondurl)
        self.activeweb.delayTime(8)

        if isstatus:
            #断言处于活动列表页

            realurl = self.activeweb.getNowPageUrl()
            if type == "1":
                perurl = "%s/nereus/marketing/admin/v/#/activityManage/missionAct/list"% WEB_URL_TITLE
            elif type == "2":
                perurl = "%s/nereus/marketing/admin/v/#/activityManage/operation/list" % WEB_URL_TITLE
            self.assertEqual(perurl,realurl)
        if istype:
            #断言出现参数错误弹框
            realtankuangtext = self.activeweb.findElementByXpathAndReturnText(num,"/html/body/div[5]/div[2]/div/div/div/div/div[2]/div")
            pretankuangtext = "Params invalid"
            self.assertEqual(pretankuangtext, realtankuangtext)




    #编辑页测试
    # @unittest.skip('test0001')
    def test0001(self):
        """
        测试在任务活动待上线活动编辑页,加载任务活动进行中的活动的ID,到达任务活动列表页
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.DSX,RW_DSX_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.DSX,RW_JXZ_EDIT_ACTIVITYID)

        self.definestatuscheck("test0001",firsturl,secondurl,True,False,"1")

    # @unittest.skip('test0002')
    def test0002(self):
        """
        测试在任务活动待上线活动编辑页,加载任务活动已结束的活动的ID,到达任务活动列表页
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.DSX,RW_DSX_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.DSX,RW_YJS_EDIT_ACTIVITYID)

        self.definestatuscheck("test0002",firsturl,secondurl,True,False,"1")

    # @unittest.skip('test0003')
    def test0003(self):
        """
        测试在任务活动进行中的活动编辑页,加载任务活动待上线的活动的ID,到达任务活动列表页
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.JXZ,RW_JXZ_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.JXZ,RW_DSX_EDIT_ACTIVITYID)

        self.definestatuscheck("test0003",firsturl,secondurl,True,False,"1")

    # @unittest.skip('test0005')
    def test0005(self):
        """
        测试在任务活动进行中的活动编辑页,加载任务活动已结束的活动的ID,到达任务活动列表页
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.JXZ,RW_JXZ_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.JXZ,RW_YJS_EDIT_ACTIVITYID)

        self.definestatuscheck("test0005",firsturl,secondurl,True,False,"1")

    # @unittest.skip('test0006')
    def test0006(self):
        """
        测试在任务活动待上线的活动编辑页,加载运营活动待上线的活动的ID,出现参数错误弹框
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.DSX,RW_DSX_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.DSX,YY_DSX_EDIT_ACTIVITYID)

        self.definestatuscheck("test0006",firsturl,secondurl,False,True,"1")

    # @unittest.skip('test0007')
    def test0007(self):
        """
        测试在任务活动待上线的活动编辑页,加载运营活动进行中的活动的ID,出现参数错误弹框
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.DSX,RW_DSX_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.DSX,YY_JXZ_EDIT_ACTIVITYID)

        self.definestatuscheck("test0007",firsturl,secondurl,False,True,"1")

    # @unittest.skip('test0008')
    def test0008(self):
        """
        测试在任务活动待上线的活动编辑页,加载运营活动已结束的活动的ID,出现参数错误弹框
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.DSX,RW_DSX_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.DSX,YY_YJS_EDIT_ACTIVITYID)

        self.definestatuscheck("test0008",firsturl,secondurl,False,True,"1")

    # @unittest.skip('test0009')
    def test0009(self):
        """
        测试在任务活动进行中的活动编辑页,加载运营活动待上线的活动的ID,出现参数错误弹框
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.JXZ,RW_JXZ_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.JXZ,YY_DSX_EDIT_ACTIVITYID)

        self.definestatuscheck("test0009",firsturl,secondurl,False,True,"1")

    # @unittest.skip('test0010')
    def test0010(self):
        """
        测试在任务活动进行中的活动编辑页,加载运营活动进行中的活动的ID,出现参数错误弹框
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.JXZ,RW_JXZ_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.JXZ,YY_JXZ_EDIT_ACTIVITYID)

        self.definestatuscheck("test0010",firsturl,secondurl,False,True,"1")

    # @unittest.skip('test0011')
    def test0011(self):
        """
        测试在任务活动进行中的活动编辑页,加载运营活动已结束的活动的ID,出现参数错误弹框
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.JXZ,RW_JXZ_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.JXZ,YY_YJS_EDIT_ACTIVITYID)

        self.definestatuscheck("test0011",firsturl,secondurl,False,True,"1")

    #详情页测试
    # @unittest.skip('test0012')
    def test0012(self):
        """
        测试在任务活动待上线的活动详情页,加载运营活动待上线的活动的ID,出现参数错误弹框
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.DETAIL,RW_DSX_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.DETAIL,YY_DSX_EDIT_ACTIVITYID)

        self.definestatuscheck("test0012",firsturl,secondurl,False,True,"1")

    # # @unittest.skip('test0013')
    def test0013(self):
        """
        测试在任务活动待上线的活动详情页,加载运营活动进行中的活动的ID,出现参数错误弹框
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.DETAIL,RW_DSX_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.DETAIL,YY_JXZ_EDIT_ACTIVITYID)

        self.definestatuscheck("test0013",firsturl,secondurl,False,True,"1")

    # # @unittest.skip('test0014')
    def test0014(self):
        """
        测试在任务活动待上线的活动详情页,加载运营活动已结束的活动的ID,出现参数错误弹框
        :return:
        """
        firsturl = "%s/%s/%s"%(WEB_URL_TITLE,self.DETAIL,RW_DSX_EDIT_ACTIVITYID)
        secondurl = "%s/%s/%s"%(WEB_URL_TITLE,self.DETAIL,YY_YJS_EDIT_ACTIVITYID)

        self.definestatuscheck("test0014",firsturl,secondurl,False,True,"1")
class TestInputTipClass(unittest.TestCase):  # 创建测试类

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址

        if ISONLINE:
            self.activeweb.findElementByXpathAndInput(LoginPage().account,ONLINE_MANAGER_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(LoginPage().password,ONLINE_MANAGER_LOGIN_PASSWORD)
        else:
            self.activeweb.findElementByXpathAndInput(LoginPage().account,TEST_MANAGER_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(LoginPage().password,TEST_MANAGER_LOGIN_PASSWORD)

        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = ActivityEditPage()
        self.testpageurl =self.testpage.pageurl   #测试页面url
        self.testpagehdmcinput = self.testpage.hdmc_input       # ---基础信息---#   活动名称输入框路劲
        self.testpagehdsjstarttime = self.testpage.hdsj_starttime # ---基础信息---#   活动时间开始时间输入框路径
        self.testpagehdsjendtime = self.testpage.hdsj_endtime  # ---基础信息---#   活动时间结束时间输入框路径
        self.testpagehdysinput  = self.testpage.hdys_input   # ---基础信息---#   活动预算输入框路径
        self.testpagetfqdselect = self.testpage.tfqd_select   # ---基础信息---#  投放渠道下拉框路径
        self.testpagehdbztextarea = self.testpage.hdbz_textarea   # ---基础信息---#  活动备注多行输入框路径
        self.testpagerwlxselect = self.testpage.rwlx_select       # ---活动任务规则---# 任务类型下拉框路径
        self.testpagejllxselect = self.testpage.jllx_select     # ---活动奖励---# 奖励类型下拉框路径
        self.testpagewtjlp = self.testpage.w_tjlp    # ---活动奖励---# 未添加礼品时,“添加礼品”文字链接路径

        self.testpagecancelbutton = self.testpage.cancelbutton   #取消按钮
        self.testpagesubmitbutton = self.testpage.submitbutton   #提交按钮

        ######################创建优惠券页面###############################
        self.ticketcreatepage = TicketCreatePage()   #创建优惠券页
        self.ticketcreatepage_kcsl_input  = self.ticketcreatepage.kcsl_input   #第一部分# 库存数量输入框路径
        self.ticketcreatepage_qyxq_select = self.ticketcreatepage.qyxq_select   #第一部分# 券有效期选择框路径
        self.ticketcreatepage_yhqsm_areatext  = self.ticketcreatepage.yhqsm_areatext    #第一部分# 优惠券说明多行输入框路径
        self.ticketcreatepage_yhqmc_input = self.ticketcreatepage.yhqmc_input    #第二部分# 优惠券名称输入框路径
        self.ticketcreatepage_yhlx_select = self.ticketcreatepage.yhlx_select    #第二部分# 优惠类型选择框路径
        self.ticketcreatepage_yhms_select = self.ticketcreatepage.yhms_select    #第二部分# 优惠模式选择框路径
        self.ticketcreatepage_zdxf_input = self.ticketcreatepage.zdxf_input    #第二部分# 最低消费输入框路径
        self.ticketcreatepage_zfqdxz_select  = self.ticketcreatepage.zfqdxz_select     #第二部分# 支付渠道限制选择框路径
        self.ticketcreatepage_syfw_select   = self.ticketcreatepage.syfw_select     #第二部分# 使用范围选择框路径

        self.ticketcreatepage_confirm_button = self.ticketcreatepage.confirm_button   #页面 确定按钮

        ######################活动列表页###############################
        self.activitylistpage = ActivityListPage()   #活动列表页
        self.activitylistpage_searchtableresult = self.activitylistpage.searchtableresult


        #pass


    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {'name': '.nereus.manager.settle.banks', 'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'}
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    def defineclickinputdeleteicon(self,num,inputxpath,inputdelecticonxpath):
        self.activeweb.findElementByXpathAndClickNum(num, inputxpath)
        self.activeweb.delayTime(2)
        self.activeweb.findElementByXpathAndClickNum(num, inputdelecticonxpath)

    #定义inputtip函数
    def defineinputtip(self,num,isinput=None,inputxpath=None,
                       inputtext=None,inputtipxpath=None,inputtiptext=None):
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)

        self.defineclickinputdeleteicon(num,self.testpage.hdmc_input,self.testpage.hdmc_input_delect_icon)   # 删除活动名称输入框中的内容
        self.defineclickinputdeleteicon(num,self.testpage.hdsj_starttime,self.testpage.hdsj_starttime_delete_icon)   #删除活动开始时间内容
        self.defineclickinputdeleteicon(num, self.testpage.hdsj_endtime,self.testpage.hdsj_endtime_delete_icon)  # 删除活动结束时间内容
        self.defineclickinputdeleteicon(num, self.testpage.hdys_input, self.testpage.hdys_input_delete_icon)  # 删除活动预算输入框中的内容

        if ISONLINE:
            # 投放渠道二级渠道不选中任何内容
            if self.activeweb.findElementByXpath(self.testpage.tfqd_select_nbqd_fxk_mbmpay_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_mbmpay_checkbox)
            if self.activeweb.findElementByXpath(
                    self.testpage.tfqd_select_nbqd_fxk_mydisrupto_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(num,
                                                             self.testpage.tfqd_select_nbqd_fxk_mydisrupto_checkbox)
            if self.activeweb.findElementByXpath(
                    self.testpage.tfqd_select_nbqd_fxk_qrindo_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_qrindo_checkbox)
        else:
            if self.activeweb.findElementByXpath(self.testpage.tfqd_select_nbqd_fxk_mbmpay_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_mbmpay_checkbox)
            if self.activeweb.findElementByXpath(
                    self.testpage.tfqd_select_nbqd_fxk_mydisrupto_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(num,
                                                             self.testpage.tfqd_select_nbqd_fxk_mydisrupto_checkbox)
            if self.activeweb.findElementByXpath(
                    self.testpage.tfqd_select_nbqd_fxk_qrindo_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_qrindo_checkbox)
            if self.activeweb.findElementByXpath(
                    self.testpage.tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(num,
                                                         self.testpage.tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox)
            if self.activeweb.findElementByXpath(
                    self.testpage.tfqd_select_nbqd_fxk_paysdk_checkbox).is_selected():
                self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tfqd_select_nbqd_fxk_paysdk_checkbox)

        self.activeweb.findElementByXpathAndClickOptionXpathNum(num, self.testpagerwlxselect,
                                                                self.testpage.rwlx_select_jx_option)  # 任务类型选择交易

        #不选择交易类型
        if self.activeweb.findElementByXpath(
                self.testpage.jy_wcjy_jylx_fxk_xf_checkbox).is_selected():
            self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_jylx_fxk_xf_checkbox)  # 点击交易类型-消费前选择框

        if self.activeweb.findElementByXpath(
                self.testpage.jy_wcjy_jylx_fxk_cz_checkbox).is_selected():
            self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_jylx_fxk_cz_checkbox)  # 点击交易类型-充值前选择框

        if self.activeweb.findElementByXpath(
                self.testpage.jy_wcjy_jylx_fxk_zz_checkbox).is_selected():
            self.activeweb.findElementByXpathAndClickNum(num, self.testpage.jy_wcjy_jylx_fxk_zz_checkbox)  # 点击交易类型-转账前选择框

        # self.activeweb.delayTime(5000)
        #点击用户活动参与次数
        self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tjxz)  # 点击添加限制文字链接
        # self.activeweb.delayTime(5000)
        self.activeweb.findElementByXpathAndClickNum(num,
                                                     self.testpage.rwmb_popup_yhhdcycs_option)  # 点击添加限制弹框中的用户活动参与次数


        #是否输入input内容
        if isinput:
            if inputxpath != None and inputtext !=None:
                self.activeweb.findElementByXpathAndInputNum(num, inputxpath, inputtext)  # 输入input内容

        self.activeweb.findElementByXpathAndScriptClickNum(num, self.testpagesubmitbutton)  # 点击提交按钮
        # self.activeweb.delayTime(5000)
        self.defineasserttextnum(num,inputtipxpath,inputtiptext)   #断言tip实际内容是否与预期内容一致


    def defineasserttextnum(self,num,testelexpath,expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(num,testelexpath)
        self.assertEqual(expecttext,testtext)
        self.activeweb.outPutMyLog("存在text:%s"%testtext)

    def defineisintable(self,num,testtablexpath,expecttext,tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog("在【%s】中存在:【%s】"% (value[int(tablecolnum)],expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在【%s】不存在:【%s】"% (tabledic,expecttext))
            self.assertTrue(False)



    @staticmethod    #根据不同的参数生成测试用例
    def getTestFunc(num,isinput,inputxpath,
                       inputtext,inputtipxpath,inputtiptext):
        def func(self):
            self.defineinputtip(num,isinput,inputxpath,
                       inputtext,inputtipxpath,inputtiptext)
        return func
class TestAwardRequestListSearchClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址
        self.activeweb.findElementByXpathAndInput(LoginPage().account,
                                                  MANAGER_LOGIN_ACCOUNT)
        self.activeweb.findElementByXpathAndInput(LoginPage().password,
                                                  MANAGER_LOGIN_PASSWORD)
        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = AwardRequestListPage()
        self.testpageurl = self.testpage.pageurl  #测试页面url
        self.testpagesearchbutton = self.testpage.cx_button
        self.testpagesearchresultxpathtrue = self.testpage.searchtableresult
        self.testpagesearchresultxpathfalse = self.testpage.searchtableresult2
        #pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {
            'name': '.nereus.manager.settle.banks',
            'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'
        }
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义搜索查找函数
    def definesearch(self,
                     num,
                     isclicklastpage=None,
                     selectxpath=None,
                     selectoptiontextxpath=None,
                     selectinputxpath=None,
                     selectinputselectonexpath=None,
                     selectinputtext=None,
                     isfind=False,
                     colnum=None,
                     checktext=None):
        # self.activeweb.writerCookies(self.cookie, LoginPage().pageurl,MerchantListPage().pageurl)
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(5)

        #点击最后一页
        if isclicklastpage:
            self.activeweb.findElementByXpathAndScriptClick(
                self.testpage.last_page)

        if selectxpath != None and selectoptiontextxpath != None:
            self.activeweb.findElementByXpathAndScriptClick(selectxpath)
            self.activeweb.findElementByXpathAndScriptClick(
                selectoptiontextxpath)

            # self.activeweb.findElementByXpathAndReturnOptions(selectxpath,str(selectoptiontext))
        if selectinputxpath != None and selectinputtext != None:
            self.activeweb.findElementByXpathAndInput(selectinputxpath,
                                                      str(selectinputtext))
            if selectinputselectonexpath != None:
                self.activeweb.findElementByXpathAndScriptClick(
                    selectinputselectonexpath)
        self.activeweb.findElementByXpathAndClick(self.testpagesearchbutton)
        self.activeweb.delayTime(5)
        # self.activeweb.delayTime(5000)
        if isfind:
            tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
                num, self.testpagesearchresultxpathtrue)
        else:
            tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
                num, self.testpagesearchresultxpathfalse)
        for value in tabledic.values():
            if str(checktext).lower() in value[int(colnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog("在【%s】中存在:【%s】" %
                                           (value[int(colnum)], checktext))
            else:
                self.activeweb.outPutMyLog("在【%s】中不存在:【%s】" %
                                           (value[int(colnum)], checktext))
                self.assertTrue(False)

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在text:%s" % testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在【%s】中存在:【%s】" % (value[int(tablecolnum)], expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在【%s】不存在:【%s】" %
                                       (tabledic, expecttext))
            self.assertTrue(False)

    @staticmethod  # 根据不同的参数生成测试用例
    def getTestFunc(num, isclicklastpage, selectxpath, selectoptiontextxpath,
                    selectinputxpath, selectinputselectonexpath,
                    selectinputtext, isfind, colnum, checktext):
        def func(self):
            self.definesearch(num, isclicklastpage, selectxpath,
                              selectoptiontextxpath, selectinputxpath,
                              selectinputselectonexpath, selectinputtext,
                              isfind, colnum, checktext)

        return func
예제 #13
0
class TestEditActivityClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址
        self.activeweb.findElementByXpathAndInput(LoginPage().account,
                                                  MANAGER_LOGIN_ACCOUNT)
        self.activeweb.findElementByXpathAndInput(LoginPage().password,
                                                  MANAGER_LOGIN_PASSWORD)
        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = ActivityEditPage()
        self.testpageurl = self.testpage.pageurl  #测试页面url
        self.testpagehdmcinput = self.testpage.hdmc_input  # ---基础信息---#   活动名称输入框路劲
        self.testpagehdlxselect = self.testpage.hdlx_select  # ---基础信息---#   活动类型选项框路径
        self.testpagehdsjstarttime = self.testpage.hdsj_starttime  # ---基础信息---#   活动时间开始时间输入框路径
        self.testpagehdsjendtime = self.testpage.hdsj_endtime  # ---基础信息---#   活动时间结束时间输入框路径
        self.testpagehdysinput = self.testpage.hdys_input  # ---基础信息---#   活动预算输入框路径

        self.testpagehdbztextarea = self.testpage.hdbz_textarea  # ---基础信息---#  活动备注多行输入框路径

        self.testpagejllxselect = self.testpage.jllx_select  # ---活动奖励---# 奖励类型下拉框路径

        self.testpagecancelbutton = self.testpage.cancelbutton  #取消按钮
        self.testpagesubmitbutton = self.testpage.submitbutton  #提交按钮

        ######################活动列表页###############################
        self.activitylistpage = ActivityListPage()  #活动列表页
        self.activitylistpage_searchtableresult = self.activitylistpage.searchtableresult
        #pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {
            'name': '.nereus.manager.settle.banks',
            'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'
        }
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义创建活动,
    #投放渠道一级为1表示内部渠道,为2表示外部渠道
    #投放渠道二级为0表示全选,为1,2,等表示选一项和选多项组合,程序中只有全选和选择一项的情况
    # 任务类型为1表示注册,为2表示交易类型
    #奖励类型1表示固定奖励
    def defineeditactivity(self, num, hdmcinputtext, hdlx, hdysinputtext,
                           tfqdyj, tfqdej, hdbztextareainputtext, rwlx, tjrwxz,
                           jyjylx, jyzffs, jymgyhzdcycsinputtext,
                           jymgyhmrcycsinputtext, jllx, iscancel):
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)

        # 创建活动
        # 填入基础信息部分
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpagehdmcinput,
                                                     hdmcinputtext)  # 输入活动名称

        # 选择活动类型
        if hdlx == "1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagehdlxselect,
                self.testpage.hdlx_select_lx_option)  # 选择活动类型选择拉新
        elif hdlx == "2":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagehdlxselect,
                self.testpage.hdlx_select_ch_option)  # 选择活动类型选择促活
        elif hdlx == "3":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagehdlxselect,
                self.testpage.hdlx_select_lc_option)  # 选择活动类型选择留存
        elif hdlx == "4":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagehdlxselect,
                self.testpage.hdlx_select_zh_option)  # 选择活动类型选择转化
        elif hdlx == "5":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagehdlxselect,
                self.testpage.hdlx_select_tsbc_option)  # 选择活动类型选择投诉补偿

        self.activeweb.findElementByXpathAndClickAbountData(
            num,
            self.testpagehdsjstarttime,
            self.testpage.hdsj_starttime_daytime,
            pathright=self.testpage.hdsj_starttime_rightmove,
            pathconfirm=self.testpage.hdsj_starttime_queding)  # 点选活动时间开始时间
        self.activeweb.findElementByXpathAndClickAbountData(
            num,
            self.testpagehdsjendtime,
            self.testpage.hdsj_endtime_daytime,
            pathright=self.testpage.hdsj_endtime_rightmove,
            pathconfirm=self.testpage.hdsj_endtime_queding)  # 点选活动时间结束时间
        self.activeweb.findElementByXpathAndInputNum(num,
                                                     self.testpagehdysinput,
                                                     hdysinputtext)  # 输入活动预算
        self.activeweb.findElementByXpathAndInputNum(
            num, self.testpagehdbztextarea, hdbztextareainputtext)  # 输入活动备注

        # 填入活动奖励部分
        if jllx == "1":
            self.activeweb.findElementByXpathAndClickOptionXpathNum(
                num, self.testpagejllxselect,
                self.testpage.jllx_select_gdjl_option)  # 选择奖励类型为固定奖励

        if iscancel:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num, self.testpagecancelbutton)  # 点击取消按钮
        else:
            self.activeweb.findElementByXpathAndScriptClickNum(
                num, self.testpagesubmitbutton)  # 点击提交按钮
            # 断言活动列表中是否有新增加的活动
            self.defineisintable(num, self.activitylistpage_searchtableresult,
                                 hdmcinputtext, 1)

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在text:%s" % testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在【%s】中存在:【%s】" % (value[int(tablecolnum)], expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在【%s】不存在:【%s】" %
                                       (tabledic, expecttext))
            self.assertTrue(False)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, hdmcinputtext, hdlx, hdysinputtext, tfqdyj, tfqdej,
                    hdbztextareainputtext, rwlx, tjrwxz, jyjylx, jyzffs,
                    jymgyhzdcycsinputtext, jymgyhmrcycsinputtext, jllx,
                    iscancel):
        def func(self):
            self.defineeditactivity(num, hdmcinputtext, hdlx, hdysinputtext,
                                    tfqdyj, tfqdej, hdbztextareainputtext,
                                    rwlx, tjrwxz, jyjylx, jyzffs,
                                    jymgyhzdcycsinputtext,
                                    jymgyhmrcycsinputtext, jllx, iscancel)

        return func
예제 #14
0
class TestInputTipClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址

        if ISONLINE:
            self.activeweb.findElementByXpathAndInput(
                LoginPage().account, ONLINE_MANAGER_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(
                LoginPage().password, ONLINE_MANAGER_LOGIN_PASSWORD)
        else:
            self.activeweb.findElementByXpathAndInput(
                LoginPage().account, TEST_MANAGER_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(
                LoginPage().password, TEST_MANAGER_LOGIN_PASSWORD)

        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)

        self.testpage = TicketCreatePage()
        self.testpageqyxqselect = self.testpage.qyxq_select  # 第一部分# 券有效期选择框路径
        self.testpageyhmsselect = self.testpage.yhms_select  # 第二部分# 优惠模式选择框路径
        self.testpagesyfwselect = self.testpage.syfw_select  # 第二部分# 使用范围选择框路径
        self.testpageconfirmbutton = self.testpage.confirm_button_zdsh  # 页面确定按钮

        ######################创建活动页面###############################
        self.activitycreatepage = ActivityCreatePage()
        self.activitycreatepage_pageurl = self.activitycreatepage.pageurl
        self.activitycreatepage_w_tjlp = self.activitycreatepage.w_tjlp  # ---活动奖励---# 未添加礼品时,“添加礼品”文字链接路径

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {
            'name': '.nereus.manager.settle.banks',
            'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'
        }
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义inputtip函数
    def defineinputtip(self,
                       num,
                       isinput=None,
                       inputxpath=None,
                       inputtext=None,
                       inputtipxpath=None,
                       inputtiptext=None):
        self.activeweb.getUrl(self.activitycreatepage_pageurl)
        self.activeweb.delayTime(3)

        #创建活动页,点击“添加礼品”文字链接
        self.activeweb.findElementByXpathAndClickNum(
            num, self.activitycreatepage_w_tjlp)  # 点击添加礼品文字链接(还未添加礼品)

        #进入创建优惠券页,新建优惠券

        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpageqyxqselect,
            self.testpage.qyxq_select_option_xdsj)  # 选择券有效期选项为相对时间
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpageyhmsselect,
            self.testpage.yhms_select_option_sjje)  # 优惠模式选择随机金额
        self.activeweb.findElementByXpathAndClickOptionXpathNum(
            num, self.testpagesyfwselect,
            self.testpage.syfw_select_option_zdsh)  # 使用范围选择指定商户
        #是否输入input内容
        if isinput:
            if inputxpath != None and inputtext != None:
                self.activeweb.findElementByXpathAndInputNum(
                    num, inputxpath, inputtext)  # 输入input内容

        self.activeweb.findElementByXpathAndClickNum(
            num, self.testpageconfirmbutton)  # 点击确定按钮
        self.defineasserttextnum(num, inputtipxpath,
                                 inputtiptext)  #断言tip实际内容是否与预期内容一致

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在text:%s" % testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在%s中存在text:%s" % (value[int(tablecolnum)], expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在%s不存在:%s" % (tabledic, expecttext))
            self.assertTrue(False)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, isinput, inputxpath, inputtext, inputtipxpath,
                    inputtiptext):
        def func(self):
            self.defineinputtip(num, isinput, inputxpath, inputtext,
                                inputtipxpath, inputtiptext)

        return func
예제 #15
0
class TestReviewClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # cls.activeweb = ActiveWeb()  # 实例化
        # cls.loginurl = LoginPage().pageurl
        # cls.activeweb.getUrl(cls.loginurl)  # 打开网址
        # if ISONLINE:
        #     cls.activeweb.findElementByXpathAndInput(LoginPage().account, ONLINE_MANAGER_LOGIN_ACCOUNT)
        #     cls.activeweb.findElementByXpathAndInput(LoginPage().password, ONLINE_MANAGER_LOGIN_PASSWORD)
        # else:
        #     cls.activeweb.findElementByXpathAndInput(LoginPage().account, TEST_MANAGER_LOGIN_ACCOUNT)
        #     cls.activeweb.findElementByXpathAndInput(LoginPage().password, TEST_MANAGER_LOGIN_PASSWORD)
        #
        # cls.activeweb.findElementByXpathAndScriptClick(LoginPage().loginbutton)
        # cls.activeweb.delayTime(3)
        # cls.testpage = ReviewPage()
        # cls.activeweb.getUrl(MerchantListPage().pageurl)
        # cls.activeweb.delayTime(3)
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        # cls.activeweb.closeBrowse()
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址

        if ISONLINE:
            self.activeweb.findElementByXpathAndInput(
                LoginPage().account, ONLINE_MANAGER_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(
                LoginPage().password, ONLINE_MANAGER_LOGIN_PASSWORD)
        else:
            self.activeweb.findElementByXpathAndInput(
                LoginPage().account, TEST_MANAGER_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(
                LoginPage().password, TEST_MANAGER_LOGIN_PASSWORD)

        self.activeweb.findElementByXpathAndScriptClick(
            LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = ReviewPage()
        # self.testpageurl =self.testpage.pageurl   #测试页面url
        self.activeweb.getUrl(MerchantListPage().pageurl)
        self.activeweb.delayTime(3)
        pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        pass

    def defineclickturndown(self, num, reviewnoteinputtext):
        self.definesearch(num,
                          MerchantListPage().keywordselectxpath,
                          MerchantListPage().keywordoption_merchantid_text,
                          MerchantListPage().keywordselectinputxpath,
                          MANAGER_REVIEW_MERCHANTID, True, 6, "Review")
        #点击Review
        self.activeweb.findElementByXpathAndScriptClick(
            MerchantListPage().firstdatareview)
        #输入拒绝内容
        self.activeweb.findElementByXpathAndInput(
            self.testpage.reviewnoteinput, reviewnoteinputtext)
        #获取输入的内容
        self.activeweb.findElementByXpathAndReturnText(
            num, self.testpage.reviewnoteinput)
        #点击拒绝按钮
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpage.turndownbutton)

        # self.activeweb.delayTime(1000)

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在文本信息:%s" % testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            self.activeweb.outPutMyLog("%s" % value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在%s中存在文本信息:%s" % (value[int(tablecolnum)], expecttext))
                break
            else:
                self.activeweb.outPutMyLog(
                    "在%s不存在文本信息:%s" % (value[int(tablecolnum)], expecttext))
                self.assertTrue(False)

    #定义搜索查找函数
    def definesearch(self,
                     num,
                     selectxpath=None,
                     selectoptiontext=None,
                     selectinputxpath=None,
                     selectinputtext=None,
                     isfind=False,
                     colnum=None,
                     checktext=None):

        if selectxpath != None and selectoptiontext != None:
            # self.activeweb.findElementByXpathAndScriptClick(selectxpath)
            # self.activeweb.findElementByXpathAndScriptClick(selectoptiontextxpath)
            self.activeweb.findElementByXpathAndReturnOptionsNum(
                num, selectxpath, str(selectoptiontext))

        if selectinputxpath != None and selectinputtext != None:
            self.activeweb.findElementByXpathAndInput(selectinputxpath,
                                                      str(selectinputtext))
        self.activeweb.findElementByXpathAndClick(
            MerchantListPage().searchbutton)
        self.activeweb.delayTime(5)
        if isfind:
            tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
                num,
                MerchantListPage().searchtableresult)
        else:
            tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
                num,
                MerchantListPage().searchtableresult2)

        for value in tabledic.values():
            if str(checktext).lower() in value[int(colnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog("在%s中存在文本信息:%s" %
                                           (value[int(colnum)], checktext))
                break
            else:
                self.activeweb.outPutMyLog("在%s不存在文本信息:%s" %
                                           (value[int(colnum)], checktext))
                self.assertTrue(False)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, reviewnoteinputtext):
        def func(self):
            self.defineclickturndown(num, reviewnoteinputtext)

        return func
예제 #16
0
class TestDownLinesActivityClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址
        self.activeweb.findElementByXpathAndInput(LoginPage().account,
                                                  MANAGER_LOGIN_ACCOUNT)
        self.activeweb.findElementByXpathAndInput(LoginPage().password,
                                                  MANAGER_LOGIN_PASSWORD)
        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = ActivityListPage()
        self.testpageurl = self.testpage.pageurl  #测试页面url

        #pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {
            'name': '.nereus.manager.settle.banks',
            'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'
        }
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义创建活动,
    #投放渠道一级为1表示内部渠道,为2表示外部渠道
    #投放渠道二级为0表示全选,为1,2,等表示选一项和选多项组合,程序中只有全选和选择一项的情况
    # 任务类型为1表示注册,为2表示交易类型
    #奖励类型1表示固定奖励
    def definedownlinesactivity(self, num, sxhdmcinputtext, hdmcinputtext):
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)

        #在活动名称中输入需要的活动ID
        self.activeweb.findElementByXpathAndInput(
            self.testpage.sx_hdmc_input,
            str(sxhdmcinputtext))  #在活动名称中输入需要的活动ID
        self.activeweb.delayTime(3)
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpage.sx_hdmc_input_list_one)  #点击输入框中筛选到的内容
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpage.cx_button)  #点击查询按钮
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpage.table_justone_content_sx)  # 点击下线按钮
        self.activeweb.findElementByXpathAndScriptClickNum(
            num, self.testpage.first_sx_popup_qd)  # 点击下线弹框中确定
        #断言待上线活动变为进行中
        self.defineisintable(num, self.testpage.searchtableresult,
                             hdmcinputtext, 5)

    def defineasserttextnum(self, num, testelexpath, expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(
            num, testelexpath)
        self.assertEqual(expecttext, testtext)
        self.activeweb.outPutMyLog("存在text:%s" % testtext)

    def defineisintable(self, num, testtablexpath, expecttext, tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(
            num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog(
                    "在【%s】中存在:【%s】" % (value[int(tablecolnum)], expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在【%s】不存在:【%s】" %
                                       (tabledic, expecttext))
            self.assertTrue(False)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, sxhdmcinputtext, hdmcinputtext):
        def func(self):
            self.definedownlinesactivity(num, sxhdmcinputtext, hdmcinputtext)

        return func
class TestInputTipClass(unittest.TestCase):  # 创建测试类


    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # from base.getcookie import GetCookie
        # outjsonfile = "../../../cookiejson/cookiemanager.json"
        # outloginurl = LoginPage().pageurl
        # outloginaccountxpath = LoginPage().account
        # outloginaccounttext = "81122336666"
        # outloginppasswordxpath = LoginPage().password
        # outloginpasswordtext = "abc123456"
        # outloginbuttonxpath = LoginPage().loginbutton
        #
        # getcookie = GetCookie(outjsonfile=outjsonfile, outloginurl=outloginurl,
        #                       outloginaccountxpath=outloginaccountxpath,
        #                       outloginaccounttext=outloginaccounttext, outloginppasswordxpath=outloginppasswordxpath,
        #                       outloginpasswordtext=outloginpasswordtext,
        #                       outloginbuttonxpath=outloginbuttonxpath)  # 实例化
        # getcookie.writerCookieToJson()

        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        # self.jsonfile = '../../../cookiejson/cookieagent.json'
        # self.operationjson = OperationJson(file_path=self.jsonfile)   #实例化
        # self.cookie = self.operationjson.get_all_data()
        # print("self.cookie:%s" % self.cookie)
        self.activeweb = ActiveWeb()  # 实例化
        self.loginurl = LoginPage().pageurl
        self.activeweb.getUrl(self.loginurl)  # 打开网址

        if ISONLINE:
            self.activeweb.findElementByXpathAndInput(LoginPage().account,ONLINE_MANAGER_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(LoginPage().password,ONLINE_MANAGER_LOGIN_PASSWORD)
        else:
            self.activeweb.findElementByXpathAndInput(LoginPage().account,TEST_MANAGER_LOGIN_ACCOUNT)
            self.activeweb.findElementByXpathAndInput(LoginPage().password,TEST_MANAGER_LOGIN_PASSWORD)

        self.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        self.activeweb.delayTime(3)
        self.testpage = ActivityCreatePage()
        self.testpageurl =self.testpage.pageurl   #测试页面url
        self.testpagesubmitbutton = self.testpage.submitbutton   #提交按钮

        self.testpagerwlxselect = self.testpage.rwlx_select  # ---活动任务规则---# 任务类型下拉框路径

        ######################创建优惠券页面###############################
        self.ticketcreatepage = TicketCreatePage()   #创建优惠券页
        self.ticketcreatepage_kcsl_input  = self.ticketcreatepage.kcsl_input   #第一部分# 库存数量输入框路径
        self.ticketcreatepage_qyxq_select = self.ticketcreatepage.qyxq_select   #第一部分# 券有效期选择框路径
        self.ticketcreatepage_yhqsm_areatext  = self.ticketcreatepage.yhqsm_areatext    #第一部分# 优惠券说明多行输入框路径
        self.ticketcreatepage_yhqmc_input = self.ticketcreatepage.yhqmc_input    #第二部分# 优惠券名称输入框路径
        self.ticketcreatepage_yhlx_select = self.ticketcreatepage.yhlx_select    #第二部分# 优惠类型选择框路径
        self.ticketcreatepage_yhms_select = self.ticketcreatepage.yhms_select    #第二部分# 优惠模式选择框路径
        self.ticketcreatepage_zdxf_input = self.ticketcreatepage.zdxf_input    #第二部分# 最低消费输入框路径
        self.ticketcreatepage_zfqdxz_select  = self.ticketcreatepage.zfqdxz_select     #第二部分# 支付渠道限制选择框路径
        self.ticketcreatepage_syfw_select   = self.ticketcreatepage.syfw_select     #第二部分# 使用范围选择框路径

        self.ticketcreatepage_confirm_button = self.ticketcreatepage.confirm_button   #页面 确定按钮

        ######################活动列表页###############################
        self.activitylistpage = ActivityListPage()   #活动列表页
        self.activitylistpage_searchtableresult = self.activitylistpage.searchtableresult

        ######################待上线活动详情页###############################
        self.activitydetialspage = ActivityDetialsPage()   #活动列表页



        #pass


    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activeweb.closeBrowse()
        # pass

    def writexunicookie(self):
        addcookie = {'name': '.nereus.manager.settle.banks', 'value': 'QCK9GvKG8OEOh6lRUyyLlmKnHl8i3w'}
        self.activeweb.driver.add_cookie(addcookie)
        self.activeweb.driver.refresh()
        self.activeweb.delayTime(5)
        self.activeweb.outPutMyLog("写入虚拟银行cookie完成")

    #定义inputtip函数
    def defineinputtip(self,num,isinput=None,inputxpath=None,
                       inputtext=None,inputtipxpath=None,inputtiptext=None):
        self.activeweb.getUrl(self.testpageurl)
        self.activeweb.delayTime(3)

        self.activeweb.findElementByXpathAndClickOptionXpathNum(num, self.testpagerwlxselect,
                                                                self.testpage.rwlx_select_jx_option)  # 任务类型选择交易
        self.activeweb.findElementByXpathAndClickNum(num, self.testpage.tjxz)  # 点击添加限制文字链接
        self.activeweb.findElementByXpathAndClickNum(num,
                                                     self.testpage.rwmb_popup_yhhdcycs_option)  # 点击添加限制弹框中的用户活动参与次数

        #是否输入input内容
        if isinput:
            if inputxpath != None and inputtext !=None:
                self.activeweb.findElementByXpathAndInputNum(num, inputxpath, inputtext)  # 输入input内容

        self.activeweb.findElementByXpathAndScriptClickNum(num, self.testpagesubmitbutton)  # 点击提交按钮
        self.defineasserttextnum(num,inputtipxpath,inputtiptext)   #断言tip实际内容是否与预期内容一致


    def defineasserttextnum(self,num,testelexpath,expecttext):
        #断言是否存在某个文本
        testtext = self.activeweb.findElementByXpathAndReturnText(num,testelexpath)
        self.assertEqual(expecttext,testtext)
        self.activeweb.outPutMyLog("存在text:%s"%testtext)

    def defineisintable(self,num,testtablexpath,expecttext,tablecolnum):
        notexsitflag = True
        tabledic = self.activeweb.findElementByXpathAndReturnTableNum(num, testtablexpath)
        for value in tabledic.values():
            # self.activeweb.outPutMyLog("%s"% value[int(tablecolnum)])
            if str(expecttext).lower() in value[int(tablecolnum)].lower():
                self.assertTrue(True)
                self.activeweb.outPutMyLog("在【%s】中存在:【%s】"% (value[int(tablecolnum)],expecttext))
                notexsitflag = False
                break
        if notexsitflag:
            self.activeweb.outPutMyLog("在【%s】不存在:【%s】"% (tabledic,expecttext))
            self.assertTrue(False)



    @staticmethod    #根据不同的参数生成测试用例
    def getTestFunc(num,isinput,inputxpath,
                       inputtext,inputtipxpath,inputtiptext):
        def func(self):
            self.defineinputtip(num,isinput,inputxpath,
                       inputtext,inputtipxpath,inputtiptext)
        return func