def run(self): self.outPutMyLog('---------------------------') # print('---------------------------') stdout_backup = sys.stdout gettime = GetTimeStr() timestr = gettime.getTimeStr() # define the log file that receives your log info logpath = "%s/log/%s_message.txt" % (str( os.path.dirname(os.path.dirname( os.path.abspath(__file__)))), timestr) log_file = open(logpath, "w", encoding="utf-8") self.outPutMyLog('Now all print info will be written to message.log') # print("Now all print info will be written to message.log") # redirect print output to log file sys.stdout = log_file self.outPutMyLog('----------开始打印日志-----------------\n') # print('----------开始打印日志-----------------\n') # any command line that you will execute self.runAllTest() self.outPutMyLog('\n----------日志打印结束-----------------') # print('\n----------日志打印结束-----------------') log_file.close() # restore the output to initial pattern sys.stdout = stdout_backup self.outPutMyLog('Now this will be presented on screen') # print("Now this will be presented on screen") # 发送log至邮箱 send_e = SendEmail() send_e.send_main([1], [2], logpath)
def __generateTestCases(): from addticket.models import AddTicket if ISONLINE: addticket_all = AddTicket.objects.filter(testproject="营销系统_现网").filter( testmodule="任务活动管理").filter(testpage="创建各种代金券").order_by('id') else: addticket_all = AddTicket.objects.filter(testproject="营销系统").filter( testmodule="任务活动管理").filter(testpage="创建各种代金券").order_by('id') rows_count = addticket_all.count() for addticket in addticket_all: if len(str(addticket.id)) == 1: addticketid = '0000%s' % addticket.id elif len(str(addticket.id)) == 2: addticketid = '000%s' % addticket.id elif len(str(addticket.id)) == 3: addticketid = '00%s' % addticket.id elif len(str(addticket.id)) == 4: addticketid = '0%s' % addticket.id elif len(str(addticket.id)) == 5: addticketid = '%s' % addticket.id else: addticketid = 'Id已经超过5位数,请重新定义' args = [] args.append(addticket.id) args.append(addticket.ffzt) args.append(addticket.kcslinputtext) args.append(addticket.qyxq) args.append(addticket.xdsjtsinputtext) args.append(addticket.yxcbcdf) args.append("%s_%s" % (addticket.yhqmcinputtext, GetTimeStr().getTimeStr())) args.append(addticket.yhlx) args.append(addticket.yhms) args.append(addticket.gdjemzinputtext) args.append(addticket.sjjemzmiminputtext) args.append(addticket.sjjemzmimaxinputtext) args.append(addticket.zdxfinputtext) args.append(addticket.sypt) args.append(addticket.syfw) args.append(addticket.zdhyoptionxpath) args.append(addticket.zdshinputtext) args.append(addticket.isplsh) args.append(addticket.plfilepath) args.append(addticket.sfzctq) args.append(addticket.iscancel) setattr(TestCreateTicketClass, 'test_func_%s_%s' % (addticketid, addticket.testcasetitle), TestCreateTicketClass.getTestFunc( *args)) # 通过setattr自动为TestCase类添加成员方法,方法以“test_func_”开头
def DrawPie(self, result): """ 绘制饼图用pie :return: """ labels = 'OK', 'F', 'E' fracs = [result.success_count, result.failure_count, result.error_count] colors = ['green', 'orange', 'red'] explode = [0, 0, 0] # 0.1 凸出这部分, plt.axes(aspect=1) # set this , Figure is round, otherwise it is an ellipse # autopct ,show percet plt.pie(x=fracs, colors=colors, labels=labels, explode=explode, autopct='%3.1f %%', shadow=True, labeldistance=1.1, startangle=90, pctdistance=0.6 ) # plt.show() # 显示图例 plt.legend() #设置饼图截图路径 gts = GetTimeStr() tStr = gts.getTimeStr() #获取当前时间串 currentny = gts.getTimeStrNY() #获取当前时间的年月 firedir = r'%s/media/report/%s/pies/' % (os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))),currentny) gts.createdir(firedir) logPath = firedir imgPath = os.path.join(logPath, "%s_pie.png" % tStr) #保存饼图 plt.savefig(imgPath) #显示饼图路径: showimgPath = r'%s/media/report/%s/pies/%s_pie.png'%(DJANGO_SERVER_YUMING,currentny,tStr) #返回饼图路径 return showimgPath
def runAllTest(self): #将用例组件成数组 alltestnames = caselist() suite = unittest.TestSuite() for testpy in alltestnames: try: suite.addTest( unittest.defaultTestLoader.loadTestsFromName( testpy)) #默认加载所有用例 except Exception: print('ERROR: Skipping tests from "%s".' % testpy) try: __import__(test) except ImportError: print('Could not import the "%s" test module.' % testpy) else: print('Could not load the "%s" test suite.' % testpy) from traceback import print_exc print_exc() self.outPutMyLog('Running the tests...') # print('Running the tests...') gettime = GetTimeStr() filename = '%s/report/%s_report.html' % (str( os.path.dirname(os.path.dirname( os.path.abspath(__file__)))), gettime.getTimeStr()) fp = open(filename, 'wb') self.outPutMyLog('The report path:%s' % filename) # 定义测试报告 runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title=u'python 自动化测试_测试报告', description=u'用例执行情况:', verbosity=2) #verbosity=2,输出测试用例中打印的信息 runner.run(suite) fp.close() # 发送report至邮箱 send_e = SendEmail() send_e.send_main([1], [2], filename)
def __generateTestCases(): i = 1 filename = "createactivityid.txt" activityid = GetTimeStr().readText(filename) sxhdmcinputtext = activityid hdmcinputtext = u"进行中" args = [] args.append(i) args.append(sxhdmcinputtext) args.append(hdmcinputtext) setattr(TestHighLinesActivityClass, 'test_func_%s_%s' % (sxhdmcinputtext,hdmcinputtext), TestHighLinesActivityClass.getTestFunc(*args)) # 通过setattr自动为TestCase类添加成员方法,方法以“test_func_”开头
def runAllTest(self): #将用例组件成数组 alltestnames = caselist() suite = unittest.TestSuite() for testpy in alltestnames: try: suite.addTest( unittest.defaultTestLoader.loadTestsFromName( testpy)) #默认加载所有用例 except Exception: print('ERROR: Skipping tests from "%s".' % testpy) try: __import__(test) except ImportError: print('Could not import the "%s" test module.' % testpy) else: print('Could not load the "%s" test suite.' % testpy) from traceback import print_exc print_exc() self.outPutMyLog('Running the tests...') # print('Running the tests...') gettime = GetTimeStr() reporttimestr = gettime.getTimeStr() #获取当前时间 currentny = gettime.getTimeStrNY() #获取当前时间的年月 reportdir = "%s/media/report/%s" % (str( os.path.dirname( os.path.dirname(os.path.dirname( os.path.abspath(__file__))))), currentny) gettime.createdir(reportdir) #创建报告目录 reportname = "report/%s/%s_report.html" % (currentny, reporttimestr) filename = '%s/media/%s' % (str( os.path.dirname( os.path.dirname(os.path.dirname( os.path.abspath(__file__))))), reportname) fp = open(filename, 'wb') self.outPutMyLog('The report path:%s' % filename) # 定义测试报告 runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title=u'python 自动化测试_测试报告', description=u'用例执行情况:', verbosity=2) #verbosity=2,输出测试用例中打印的信息 runner.run(suite) fp.close() #保存报告到数据库 from reportrecord.models import Report reportrd = Report() # 数据库的对象等于Report,实例化 reportrd.reportname = reporttimestr print(reportname) reportrd.reportfile = reportname reportrd.save() # 发送report至邮箱 send_e = SendEmail() send_e.send_main([1], [2], filename)
def __generateTestCases(): from addactivity.models import AddActivity addactivity_all = AddActivity.objects.filter(testproject="营销系统").filter( testmodule="运营活动管理").filter(testpage="创建活动").filter( id=16).order_by('id') rows_count = addactivity_all.count() for addactivity in addactivity_all: if len(str(addactivity.id)) == 1: addactivityid = '0000%s' % addactivity.id elif len(str(addactivity.id)) == 2: addactivityid = '000%s' % addactivity.id elif len(str(addactivity.id)) == 3: addactivityid = '00%s' % addactivity.id elif len(str(addactivity.id)) == 4: addactivityid = '0%s' % addactivity.id elif len(str(addactivity.id)) == 5: addactivityid = '%s' % addactivity.id else: addactivityid = 'Id已经超过5位数,请重新定义' args = [] args.append(addactivity.id) args.append("%s_%s" % (addactivity.hdmcinputtext, GetTimeStr().getTimeStr())) args.append(addactivity.hdlx) args.append(addactivity.hdysinputtext) args.append(addactivity.tfqdyj) args.append(addactivity.tfqdej) args.append(addactivity.hdbztextareainputtext) args.append(addactivity.rwlx) args.append(addactivity.tjrwxz) args.append(addactivity.jyjylx) args.append(addactivity.jyzffs) args.append(addactivity.jymgyhzdcycsinputtext) args.append(addactivity.jymgyhmrcycsinputtext) args.append(addactivity.jllx) args.append(addactivity.iscancel) setattr(TestCreateActivityClass, 'test_func_%s_%s' % (addactivityid, addactivity.testcasetitle), TestCreateActivityClass.getTestFunc( *args)) # 通过setattr自动为TestCase类添加成员方法,方法以“test_func_”开头
class CompanyDetailsPage: filename = "merchantid.txt" detailsmerchantid = GetTimeStr().readText(filename) if ISONLINE: pageurl = "%s/nereus/agent/v/#/merchant/detail/%s" % (ONLINE_WEB_URL_TITLE,detailsmerchantid) else: pageurl = "%s/nereus/agent/v/#/merchant/detail/%s" % (TEST_WEB_URL_TITLE, detailsmerchantid) #---Basic info---# basicinfo = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[1]/span" basicinfotext = "Basic info" # ---key---# merchantid = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[1]/label" merchantidtext = "Merchant ID:" loginaccount = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[2]/label" loginaccounttext = "Login account:" agent = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[3]/label" agenttext = "Agent:" brandname = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[1]/label" brandnametext = "Brand name:" # ---value---# merchantidvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[1]/div/div" merchantidvaluetext = AGENT_DETAILS_MERCHANTID loginaccountvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[2]/div/div" loginaccountvaluetext = "62%s"% AGENT_LOGIN_ACCOUNT agentvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[3]//div/div" agentvaluetext = "test" brandnamevalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[1]/div/div" brandnamevaluetext = "test_individu_20190415152327" #---Merchant info---# merchantinfo = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[1]/span" merchantinfotext = "Merchant info" # ---key---# # email = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[2]/label" # emailtext = "Email:" # contactnumber = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[3]/label" # contactnumbertext = "Contact number:" merchanttype = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[4]/label" merchanttypetext = "Merchant type:" category = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[5]/label" categorytext = "Category:" criteria = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[6]/label" criteriatext = "Criteria:" # siup = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[7]/label" # siuptext = "SIUP:" province = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[8]/label" provincetext = "Province:" city = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[9]/label" citytext = "City:" district = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[10]/label" districttext = "District:" village = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[11]/label" villagetext = "Village:" postcode = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[12]/label" postcodetext = "Postcode:" address = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[13]/label" addresstext = "Address:" companyname = "" #公司专有 companynametext = "Company name:" #公司专有 officialwebsite = "" #公司专有 officialwebsitetext = "Official website:" #公司专有 npwptaxid = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[16]/label" #公司专有 npwptaxidtext = "NPWP / TAX ID:" #公司专有 photonpwpcompany = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[15]/label" photonpwpcompanytext = "Photo NPWP Company:" phototdp = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[16]/label" phototdptext = "Photo TDP:" # ---value---# merchanttypevalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[4]/div/div" merchanttypevaluetext = "Individu" categoryvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[5]/div/div" categoryvaluetext = "PASSENGER TRANSPORTATION" criteriavalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[6]/div/div" criteriavaluetext = "Micro" provincevalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[8]/div/div" provincevaluetext = "JAWA BARAT" cityvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[9]/div/div" cityvaluetext = "Jawa Barat" districtvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[10]/div/div" districtvaluetext = "test_individu" villagevalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[11]/div/div" villagevaluetext = "test_individu" postcodevalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[12]/div/div" postcodevaluetext = "test_individu" addressvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[13]/div/div" addressvaluetext = "test_individu" companynamevalue = "" #公司专有 officialwebsitevalue = "" #公司专有 npwptaxidvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[16]/div/div" #公司专有 photonpwpcompanyimagevalue = "" phototdpimagevalue = "" #---Owner / Person in Charge info---# ownerpersoninchangeinfo = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[1]/span" ownerpersoninchangeinfotext = "Owner / Person in Charge info" # ---key---# name = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[1]/label" nametext = "Name:" # npwp = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[2]/label" #个人专有 # npwptext = "NPWP:" #个人专有 # typeid = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[3]/label" #个人专有 # typeidtext = "Type ID:" #个人专有 # identitynumber = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[4]/label" #个人专有 # identitynumbertext = "Identity number:" #个人专有 # address2 = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[5]/label" #个人专有 # address2text = "Address:" #个人专有 # nationality = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[6]/label" #个人专有 # nationalitytext = "Nationality:" #个人专有 phone = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[7]/label" phonetext = "Phone:" email2 = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[8]/label" email2text = "Email:" position = "" #公司专有 positiontext = "" #公司专有 photofullfacebust = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[9]/label" photofullfacebusttext = "Photo PIC Full-faceBust:" # ---value---# namevalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[1]/div/div" namevaluetext = "test_20190411" # npwpvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[2]/div/div" #个人专有 # npwpvaluetext = "test_individu" #个人专有 # typeidvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[3]/div/div" #个人专有 # typeidvaluetext = "KTP" #个人专有 # identitynumbervalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[4]/div/div" #个人专有 # identitynumbervaluetext = "test_individu" #个人专有 # address2value = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[5]/div/div" #个人专有 # address2valuetext = "test_individu" #个人专有 # nationalityvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[6]/div/div" #个人专有 # nationalityvaluetext = "Indonesian" #个人专有 phonevalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[7]/div/div" phonevaluetext = "test_individu" email2value= "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[8]/div/div" email2valuetext = "*****@*****.**" positionvalue = "" #公司专有 positionvaluetext = "" #公司专有 photofullfacebustimage ="/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[3]/div[2]/div/form/div[9]/div/div/div/div/div[1]/figure/a/img" #---Profile Photos---# profilephotos = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[4]/div[1]/span" profilephotostext = "Profile Photos" # ---key---# locationphoto = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[4]/div[2]/div/form/div[1]/label" locationphototext = "Location Photo:" photoofthecashiersdesk = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[4]/div[2]/div/form/div[2]/label" photoofthecashiersdesktext = "Photo of the cashiers desk:" otherphoto = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[4]/div[2]/div/form/div[3]/label" otherphototext = "Other Photo:"
class ReviewPage: filename = "merchantid.txt" reviewmerchantid = GetTimeStr().readText(filename) if ISONLINE: pageurl = "%s/nereus/manager/index#/merchant/aduit/%s" % ( ONLINE_WEB_URL_TITLE, reviewmerchantid) else: pageurl = "%s/nereus/manager/index#/merchant/list" % ( TEST_WEB_URL_TITLE, reviewmerchantid) # ---Merchant info---# merchantinfo = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[1]/span" brandnameinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[1]/div/div/input" brandnametip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[1]/div/div[2]" emailinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[2]/div/div/input" emailtip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[2]/div/div[2]" contactnumberinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[3]/div/div/input" contactnumbertip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[3]/div/div[2]" merchanttypeselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[4]/div/div/div[1]/div/span" merchanttypetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[4]/div/div[2]" merchanttypeselectindividu = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[4]/div/div/div[2]/ul[2]/li[1]" merchanttypeselectcompany = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[4]/div/div/div[2]/ul[2]/li[2]" categoryselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[5]/div/div/div[1]/div/span" categorytip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[5]/div/div[2]" criteriaselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[6]/div/div/div[1]/div/span" criteriatip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[6]/div/div[2]" siupinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[7]/div/div[1]/input" siuptip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[7]/div/div[2]" provinceselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[8]/div/div/div[1]/div/span" provincetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[8]/div/div[2]" cityselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[9]/div/div/div[1]/div/span" citytip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[9]/div/div[2]" districtinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[10]/div/div[1]/input" districttip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[10]/div/div[2]" villageinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[11]/div/div[1]/input" villagetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[11]/div/div[2]" postcodeinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[12]/div/div/input" postcodetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[12]/div/div[2]" addressinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[13]/div/div[1]/input" addresstip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[13]/div/div[2]" photosiupimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[14]/div/div/div/div/div" photonpwpcompanyimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[15]/div/div/div/div/div" phototdpimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[1]/div[2]/div/div[16]/div/div/div/div/div" # ---Owner / Person in Charge info---# ownerpersoninchangeinfo = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[1]/span" nameinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[1]/div/div/input" nametip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[1]/div/div[2]" npwpinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[2]/div/div/input" npwptip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[2]/div/div[2]" typeidselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[3]/div/div/div[1]/div/span" typeidtip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[3]/div/div[2]" identitynumberinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[4]/div/div/input" identitynumbertip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[4]/div/div[2]" address2input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[5]/div/div/input" address2tip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[5]/div/div[2]" nationalityselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[6]/div/div/div[1]/div/span" nationalitytip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[6]/div/div[2]" phoneinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[7]/div/div/input" phonetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[7]/div/div[2]" email2input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[8]/div/div/input" email2tip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[8]/div/div[2]" photofullfacebustimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[9]/div/div/div/div/div" photofullfacebusttip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[2]/div[2]/div/div[9]/div/div[2]" # ---Profile Photos---# profilephotos = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[3]/div[1]/span" locationphotoimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[3]/div[2]/div/div[1]/div/div/div/div/div" locationphototip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[3]/div[2]/div/div[1]/div/div[2]" photoofthecashiersdeskimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[3]/div[2]/div/div[2]/div/div/div/div/div" otherphotoimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[3]/div[2]/div/div[3]/div/div/div/div/div" # ---Bank account---# bankaccount = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[4]/div[1]/span" bankselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[4]/div[2]/div/div[1]/div/div/div[1]/div/span" banktip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[4]/div[2]/div/div[1]/div/div[2]" accountnameinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[4]/div[2]/div/div[2]/div/div[1]/input" accountnametip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[4]/div[2]/div/div[2]/div/div[2]" accountnumberinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[4]/div[2]/div/div[3]/div/div[1]/input" accountnumbertip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[4]/div[2]/div/div[3]/div/div[2]" # ---QRindo account---# qrindoaccount = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[5]/div[1]/span" qrindoaccountinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[5]/div[2]/div/div/div/div/input" qrindoaccounttip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[5]/div[2]/div/div/div/div[2]" checkbutton = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/div[5]/div[2]/div/div/div/div/div[2]/button" reviewnoteinput = "/html/body/div[3]/div[2]/ui-view/ui-view/div[2]/div/form[1]/div[11]/p/span[2]/input" turndownbutton = "/html/body/div[3]/div[2]/ui-view/ui-view/div[2]/div/form[1]/div[12]/p[2]/button" approvedbutton = "/html/body/div[3]/div[2]/ui-view/ui-view/div[2]/div/form[1]/div[12]/p[1]/button" ##########################################审核第二页########################################################################################## confirmbutton = "/html/body/div[3]/div[2]/ui-view/ui-view/div[2]/div/form[2]/div[5]/button"
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)
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 __generateTestCases(): from addmerchant.models import AddMerchant addmerchant_all = AddMerchant.objects.filter(iscompany=False).filter( id=1).order_by('id') rows_count = addmerchant_all.count() for addmerchant in addmerchant_all: if len(str(addmerchant.id)) == 1: addmerchantid = '0000%s' % addmerchant.id elif len(str(addmerchant.id)) == 2: addmerchantid = '000%s' % addmerchant.id elif len(str(addmerchant.id)) == 3: addmerchantid = '00%s' % addmerchant.id elif len(str(addmerchant.id)) == 4: addmerchantid = '0%s' % addmerchant.id elif len(str(addmerchant.id)) == 5: addmerchantid = '%s' % addmerchant.id else: addmerchantid = 'Id已经超过5位数,请重新定义' args = [] args.append(addmerchant.id) args.append(addmerchant.isfictitious) args.append( "%s_%s" % (addmerchant.brandnameinputtext, GetTimeStr().getTimeStr())) args.append(addmerchant.emailinputtext) args.append(addmerchant.contactnumberinputtext) args.append(addmerchant.merchanttypeselectoptionxpath) args.append(addmerchant.categoryselectoptionxpath) args.append(addmerchant.criteriaselectoptionxpath) args.append(addmerchant.siupinputtext) args.append(addmerchant.provinceselectoptionxpath) args.append(addmerchant.cityselectoptionxpath) args.append(addmerchant.districtinputtext) args.append(addmerchant.villageinputtext) args.append(addmerchant.postcodeinputtext) args.append(addmerchant.addressinputtext) args.append(addmerchant.photosiupimagefilepath) args.append(addmerchant.photonpwpcompanyimagefilepath) args.append(addmerchant.phototdpimagefilepath) args.append(addmerchant.nameinputtext) args.append(addmerchant.npwpinputtext) args.append(addmerchant.typeidselectoptionxpath) args.append(addmerchant.identitynumberinputtext) args.append(addmerchant.address2inputtext) args.append(addmerchant.nationalityselectoptionxpath) args.append(addmerchant.phoneinputtext) args.append(addmerchant.email2inputtext) args.append(addmerchant.photofullfacebustimagefilepath) args.append(addmerchant.locationphotoimagefilepath) args.append(addmerchant.photoofthecashiersdeskimagefilepath) args.append(addmerchant.otherphotoimagefilepath) args.append(addmerchant.bankselectoptionxpath) args.append(addmerchant.accountnameinputtext) args.append(addmerchant.accountnumberinputtext) args.append(addmerchant.qrindoaccountinputtext) setattr(TestReviseMerchantClass, 'test_func_%s_%s' % (addmerchantid, addmerchant.testcasetitle), TestReviseMerchantClass.getTestFunc( *args)) # 通过setattr自动为TestCase类添加成员方法,方法以“test_func_”开头
class ReviseCompanyMerchantPage: filename = "merchantid.txt" revisemerchantid = GetTimeStr().readText(filename) if ISONLINE: pageurl = "%s/nereus/agent/v/#/merchant/revice/%s" % (ONLINE_WEB_URL_TITLE,revisemerchantid) else: pageurl = "%s/nereus/agent/v/#/merchant/revice/%s" % (TEST_WEB_URL_TITLE, revisemerchantid) auditnotapprovedtext = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div/p[2]" submitagainbutton = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div/button" # ---Basic info---# basicinfo = "" emailinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[2]/div/div/input" emailtip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[2]/div/div[2]" brandnameinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[1]/div/div/input" brandnametip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[1]/div/div[2]" #---Merchant info---# merchantinfo = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[1]/span" merchanttypeselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div/div[1]/div/span" merchanttypetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div[2]" merchanttypeselectindividu = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div/div[2]/ul[2]/li[1]" merchanttypeselectcompany = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div/div[2]/ul[2]/li[2]" categoryselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div/div[1]/div/span" categorytip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div[2]" criteriaselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[6]/div/div/div[1]/div/span" criteriatip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[6]/div/div[2]" provinceselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[8]/div/div/div[1]/div/span" provincetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[8]/div/div[2]" cityselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[9]/div/div/div[1]/div/span" citytip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[9]/div/div[2]" districtinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[10]/div/div[1]/input" districttip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[10]/div/div[2]" villageinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[11]/div/div[1]/input" villagetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[11]/div/div[2]" postcodeinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[12]/div/div/input" postcodetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[12]/div/div[2]" addressinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[13]/div/div[1]/input" addresstip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[13]/div/div[2]" companynameinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[14]/div/div/input" #新加 companynametip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[14]/div/div[2]" #新加 officialwebsiteinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[15]/div/div[1]/input" #新加 officialwebsitetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[15]/div/div[2]" #新加 npwptaxidinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[16]/div/div[1]/input" #新加 npwptaxidtip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[16]/div/div[2]" #新加 photonpwpcompanyimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[18]/div/div/div/div/div" #更换 phototdpimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[19]/div/div/div/div/div" #更换 #---Owner / Person in Charge info---# ownerpersoninchangeinfo = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[1]/span" nameinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[1]/div/div/input" nametip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[1]/div/div[2]" positioninput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/div/input" #新加 positiontip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/div[2]" #新加 # npwpinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/div/input" #去掉 # npwptip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/div[2]" #去掉 # typeidselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div/div[1]/div/span" #去掉 # typeidtip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[2]" #去掉 # identitynumberinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[4]/div/div/input" #去掉 # identitynumbertip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[4]/div/div[2]" #去掉 # address2input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[5]/div/div/input" #去掉 # address2tip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[5]/div/div[2]" #去掉 # nationalityselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[6]/div/div/div[1]/div/span" #去掉 # nationalitytip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[6]/div/div[2]" #去掉 phoneinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div/input" #更换 phonetip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[2]" #更换 email2input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[4]/div/div/input" #更换 email2tip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[4]/div/div[2]" #更换 photofullfacebustimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[5]/div/div/div/div/div" #更换 photofullfacebusttip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[5]/div/div[2]" #更换 #---Profile Photos---# profilephotos = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[1]/span" locationphotoimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/div[1]/div/div/div/div/div" locationphototip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/div[1]/div/div[2]" photoofthecashiersdeskimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/div[2]/div/div/div/div/div" otherphotoimage = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/div[3]/div/div/div/div/div" #---Bank account---# bankaccount = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[4]/div[1]/span" bankselect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[4]/div[2]/div/div[1]/div/div/div[1]/div/span" banktip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[4]/div[2]/div/div[1]/div/div[2]" accountnameinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[4]/div[2]/div/div[2]/div/div[1]/input" accountnametip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[4]/div[2]/div/div[2]/div/div[2]" accountnumberinput = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[4]/div[2]/div/div[3]/div/div[1]/input" accountnumbertip = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[4]/div[2]/div/div[3]/div/div[2]"
class ActivityEditPage: filename = "createactivityid.txt" editactivityid = GetTimeStr().readText(filename) if ISONLINE: pageurl = "%s/nereus/marketing/admin/v/#/activityManage/operation/modifyOnLine/%s" % (ONLINE_WEB_URL_TITLE,editactivityid ) else: pageurl = "%s/nereus/marketing/admin/v/#/activityManage/operation/modifyOnLine/%s" % (TEST_WEB_URL_TITLE, editactivityid) yxhdcj = "" yxhdcj_text = u"营销活动创建" # ---基础信息---# jcxx = "" jcxx_text = u"基础信息" hdmc = "" hdmc_text = u"活动名称" hdmc_input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[2]/div/div/input" hdlx = "" hdlx_text = u"活动类型" hdlx_select = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[3]/div/div/div[1]/div/span" hdlx_select_lx_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[3]/div/div/div[2]/ul[2]/li[1]" hdlx_select_ch_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[3]/div/div/div[2]/ul[2]/li[2]" hdlx_select_lc_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[3]/div/div/div[2]/ul[2]/li[3]" hdlx_select_zh_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[3]/div/div/div[2]/ul[2]/li[4]" hdlx_select_tsbc_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[3]/div/div/div[2]/ul[2]/li[5]" hdlx_select_lx_option_text = u"拉新" hdlx_select_ch_option_text = u"促活" hdlx_select_lc_option_text = u"留存" hdlx_select_zh_option_text = u"转化" hdlx_select_tsbc_option_text = u"投诉补偿" hdsj = "" hdsj_text = u"活动时间" hdsj_starttime = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div/div[1]/div/input" hdsj_starttime_rightmove = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div[1]/div[2]/div/div/div/div[1]/span[5]/i" hdsj_starttime_daytime = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div[1]/div[2]/div/div/div/div[2]/div/span[22]/em" hdsj_starttime_secondtime = "" hdsj_starttime_queding = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div[1]/div[2]/div/div/div/div[4]/button[3]" hdsj_endtime = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div/div[1]/div/input" hdsj_endtime_rightmove = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div/div[2]/div/div/div/div[1]/span[5]/i" hdsj_endtime_daytime = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div/div[2]/div/div/div/div[2]/div/span[24]/em" hdsj_endtime_secondtime = "" hdsj_endtime_queding = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div/div[2]/div/div/div/div[4]/button[3]" hdys = "" hdys_text = u"活动预算" hdys_input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[6]/div/div/input" hdbz = "" hdbz_text = u"活动备注" hdbz_textarea = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[7]/div/div/textarea" # ---活动奖励---# jlxx = "" jlxx_text = u"奖励信息" jllx = "" jllx_text = u"奖励类型" jllx_select = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[1]/div/div/div[1]/div/span" jllx_select_gdjl_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[1]/div/div/div[2]/ul[2]/li" jllx_select_gdjl_option_text = u"固定奖励" # ---未添加奖励礼品时添加礼品---# w_jllp = "" w_jllp_text = u"奖励礼品" w_tjlp = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/button" w_tjlp_text = u"添加礼品" # ---已添加奖励礼品时添加礼品---# y_jllp = "" y_jllp_text = u"奖励礼品" y_jllp_table = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/div/div/div[2]/table/tbody" y_jllp_table_xh = "" y_jllp_table_xh_text = u"序号" y_jllp_table_mc = "" y_jllp_table_mc_text = u"名称" y_jllp_table_ffzt = "" y_jllp_table_ffzt_text = u"发放状态" y_jllp_table_cz = "" y_jllp_table_cz_text = u"操作" y_jllp_table_cz_just_one_edit = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/div/div/div[2]/table/tbody/tr/td[5]/div/div/a[2]" y_jllp_table_cz_just_one_detail = "" y_jllp_table_cz_just_two_first_delete = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/div/div/div[2]/table/tbody/tr[1]/td[5]/div/div/a[3]" delete_popup_confirm = "/html/body/div[5]/div/div/div/span[1]" y_tjlp = "" y_tjlp_text = u"添加礼品" cancelbutton ="/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/span[1]" submitbutton ="/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/span[2]"
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)
class ProcesingActivityEditPage: filename = "createactivityid.txt" editactivityid = GetTimeStr().readText(filename) if ISONLINE: pageurl = "%s/nereus/marketing/admin/v/#/activityManage/operation/modifyOffLine/%s" % ( ONLINE_WEB_URL_TITLE, editactivityid) else: pageurl = "%s/nereus/marketing/admin/v/#/activityManage/operation/modifyOffLine/%s" % ( TEST_WEB_URL_TITLE, editactivityid) # pageurl = "%s/nereus/marketing/admin/v/#/activityManage/missionAct/modifyOffLine/%s" % (WEB_URL_TITLE, MARKETING_EDIT_PROCESSING_ACTIVITYID) yxhdcj = "" yxhdcj_text = u"营销活动创建" # ---基础信息---# jcxx = "" jcxx_text = u"基础信息" hdmc = "" hdmc_text = u"活动名称" hdmc_input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[2]/div/div/input" hdsj = "" hdsj_text = u"活动时间" hdsj_starttime = "" hdsj_starttime_rightmove = "" hdsj_starttime_daytime = "" hdsj_starttime_secondtime = "" hdsj_starttime_queding = "" hdsj_endtime = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div/div/div/div[1]/div/input" hdsj_endtime_rightmove = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div/div/div/div[2]/div/div/div/div[1]/span[5]/i" hdsj_endtime_daytime = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div/div/div/div[2]/div/div/div/div[2]/div/span[26]/em" hdsj_endtime_secondtime = "" hdsj_endtime_queding = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div/div/div/div[2]/div/div/div/div[4]/button[3]" hdys = "" hdys_text = u"活动预算" hdys_zjys = "" hdys_zjys_text = "增加预算" hdys_zjys_input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[7]/div/div/input" # ---已添加奖励礼品时添加礼品---# y_jllp = "" y_jllp_text = u"奖励礼品" y_jllp_table = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/div/div/div[2]/table/tbody" y_jllp_table_xh = "" y_jllp_table_xh_text = u"序号" y_jllp_table_mc = "" y_jllp_table_mc_text = u"名称" y_jllp_table_ffzt = "" y_jllp_table_ffzt_text = u"发放状态" y_jllp_table_ffzt_result_just_one = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/form/div[2]/div/div/div/div[2]/table/tbody/tr/td[4]/div/div/span" y_jllp_table_cz = "" y_jllp_table_cz_text = u"操作" y_jllp_table_cz_just_one_edit = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/form/div[2]/div/div/div/div[2]/table/tbody/tr/td[5]/div/div/a[2]" y_jllp_table_cz_just_one_detail = "" y_jllp_table_cz_just_two_first_delete = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/div/div/div[2]/table/tbody/tr[1]/td[5]/div/div/a[3]" delete_popup_confirm = "/html/body/div[5]/div/div/div/span[1]" y_tjlp = "" y_tjlp_text = u"添加礼品" cancelbutton = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/span[1]" submitbutton = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/span[2]"
class ProcesingActivityEditPage: filename = "createactivityid.txt" editactivityid = GetTimeStr().readText(filename) if ISONLINE: pageurl = "%s/nereus/marketing/admin/v/#/activityManage/missionAct/modifyOffLine/%s" % ( ONLINE_WEB_URL_TITLE, editactivityid) else: pageurl = "%s/nereus/marketing/admin/v/#/activityManage/missionAct/modifyOffLine/%s" % ( TEST_WEB_URL_TITLE, editactivityid) # pageurl = "%s/nereus/marketing/admin/v/#/activityManage/missionAct/modifyOffLine/%s" % (WEB_URL_TITLE, MARKETING_EDIT_PROCESSING_ACTIVITYID) yxhdcj = "" yxhdcj_text = u"营销活动创建" # ---基础信息---# jcxx = "" jcxx_text = u"基础信息" hdmc = "" hdmc_text = u"活动名称" hdmc_input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[2]/div/div/input" hdsj = "" hdsj_text = u"活动时间" hdsj_starttime = "" hdsj_starttime_rightmove = "" hdsj_starttime_daytime = "" hdsj_starttime_secondtime = "" hdsj_starttime_queding = "" hdsj_endtime = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div/div/div/div[1]/div/input" hdsj_endtime_rightmove = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div/div/div/div[2]/div/div/div/div[1]/span[5]/i" hdsj_endtime_daytime = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div/div/div/div[2]/div/div/div/div[2]/div/span[26]/em" hdsj_endtime_secondtime = "" hdsj_endtime_queding = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[4]/div/div/div/div/div[2]/div/div/div/div[4]/button[3]" hdys = "" hdys_text = u"活动预算" hdys_input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[5]/div/div/input" hdys_zjys_input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[6]/div/div/input" tfqd = "" tfqd_text = u"投放渠道" tfqd_select = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[6]/div/div/div[1]/div/span" tfqd_select_nbqd_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[6]/div/div/div[2]/ul[2]/li" tfqd_select_wbqd_option = "" tfqd_select_nbqd_option_text = u"内部渠道" tfqd_select_wbqd_option_text = u"外部渠道" tfqd_select_nbqd_fxk_mbmpay_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[7]/div/div/label[1]/span/input" tfqd_select_nbqd_fxk_mydisrupto_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[7]/div/div/label[2]/span/input" tfqd_select_nbqd_fxk_qrindo_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[7]/div/div/label[3]/span/input" tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[7]/div/div/label[4]/span/input" tfqd_select_nbqd_fxk_paysdk_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[7]/div/div/label[5]/span/input" tfqd_select_nbqd_fxk_app = "" tfqd_select_nbqd_fxk_web = "" tfqd_select_nbqd_fxk_sdk = "" tfqd_select_nbqd_fxk_app_text = "APP" tfqd_select_nbqd_fxk_web_text = "Web" tfqd_select_nbqd_fxk_sdk_text = "SDK" tfqd_select_wbqd_fxk_app_checkbox = "" tfqd_select_wbqd_fxk_web_checkbox = "" tfqd_select_wbqd_fxk_sdk_checkbox = "" tfqd_select_wbqd_fxk_app = "" tfqd_select_wbqd_fxk_web = "" tfqd_select_wbqd_fxk_sdk = "" tfqd_select_wbqd_fxk_app_text = "APP" tfqd_select_wbqd_fxk_web_text = "Web" tfqd_select_wbqd_fxk_sdk_text = "SDK" hdbz = "" hdbz_text = "" hdbz_textarea = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[1]/div[2]/div/div[8]/div/div/textarea" # ---活动任务规则---# hdrwgz = "" hdrwgz_text = u"活动任务规则" rwlx = "" rwlx_text = u"任务类型" rwlx_select = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[1]/div/div/div[1]/div/span" rwlx_select_zc_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[1]/div/div/div[2]/ul[2]/li[1]" rwlx_select_jx_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[1]/div/div/div[2]/ul[2]/li[2]" rwlx_select_zc_option_text = u"注册" rwlx_select_jx_option_text = u"交易" rwmb = "" rwmb_text = u"任务目标" rwmb_select = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[2]/div/div/div[1]/div/span" rwmb_select_wczc_option = "" rwmb_select_wcjx_option = "" rwmb_select_wczc_option_text = u"完成注册" rwmb_select_wcjx_option_text = u"完成交易" rwxz = "" rwxz_text = u"任务限制" tjxz = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[1]/div/div[1]/button" tjxz_text = u"添加限制" # ---添加限制弹框中选项---# rwmb_popup_jylx_option = "" rwmb_popup_zffs_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[1]/div/div[2]/ul/li[1]" rwmb_popup_yhhdcycs_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[1]/div/div[2]/ul/li[2]" rwmb_popup_jylx_option_text = u"交易类型" rwmb_popup_zffs_option_text = u"支付方式" rwmb_popup_yhhdcycs_option_text = u"用户活动参与次数" # ---注册-完成注册-任务限制---# zc_zcwc_yh = "" zc_zcwc_yh_text = u"用户" zc_zcwc_yh_checkbox = "" zc_zcwc_yh_fxk_xzcyh = "" zc_zcwc_yh_fxk_xzcyh_text = u"新注册用户" zc_zcwc_yh_fxk_xzcyh_checkbox = "" zc_zcwc_yh_fxk_xbkyh = "" zc_zcwc_yh_fxk_xbkyh_text = u"新绑卡用户" zc_zcwc_yh_fxk_xbkyh_checkbox = "" zc_zcwc_yh_fxk_wzfgyh = "" zc_zcwc_yh_fxk_wzfgyh_text = u"未支付过用户" zc_zcwc_yh_fxk_wzfgyh_checkbox = "" zc_zcwc_yhhdcycs = "" zc_zcwc_yhhdcycs_text = u"用户活动参与次数" zc_zcwc_yhhdcycs_delete_icon = "" zc_zcwc_yhhdcycs_mgyhzzcycs = "" zc_zcwc_yhhdcycs_mgyhzzcycs_text = u"每个用户最多参与次数" zc_zcwc_yhhdcycs_mgyhzzcycs_input = "" zc_zcwc_yhhdcycs_mgyhmrcycs = "" zc_zcwc_yhhdcycs_mgyhmrcycs_text = u"每个用户每日参与次数" zc_zcwc_yhhdcycs_mgyhmrcycs_input = "" # ---交易-完成交易-任务限制---# # ---交易类型---# jy_wcjy_jylx = "" jy_wcjy_jylx_text = u"交易类型" jy_wcjy_jylx_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div/span/label/label/span/input" jy_wcjy_jylx_fxk_xf = "" jy_wcjy_jylx_fxk_xf_text = u"消费" jy_wcjy_jylx_fxk_xf_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div/div/div/label[1]/span/input" jy_wcjy_jylx_fxk_cz = "" jy_wcjy_jylx_fxk_cz_text = u"充值" jy_wcjy_jylx_fxk_cz_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div/div/div/label[2]/span/input" jy_wcjy_jylx_fxk_zz = "" jy_wcjy_jylx_fxk_zz_text = u"转账" jy_wcjy_jylx_fxk_zz_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div/div/div/label[3]/span/input" # ---支付方式---# jy_wcjy_zffs = "" jy_wcjy_zffs_text = u"支付方式" jy_wcjy_zffs_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[3]/span/label/label/span/input" jy_wcjy_zffs_delete_icon = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[3]/span/i" jy_wcjy_zffs_fxk_qbye = "" jy_wcjy_zffs_fxk_qbye_text = u"钱包余额" jy_wcjy_zffs_fxk_qbye_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[3]/div/div/label[2]/span/input" jy_wcjy_zffs_fxk_yhkhq_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[3]/div/div/label[3]/span/input" jy_wcjy_zffs_fxk_yehq_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[3]/div/div/label[4]/span/input" jy_wcjy_zffs_fxk_vahspg_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[3]/div/div/label[5]/span/input" jy_wcjy_zffs_fxk_yhk = "" jy_wcjy_zffs_fxk_yhk_text = u"银行卡" jy_wcjy_zffs_fxk_yhk_checkbox = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[3]/div/div/label[1]/span/input" # ---用户活动参与次数---# jy_wcjy_yhhdcycs = "" jy_wcjy_yhhdcycs_text = u"用户活动参与次数" jy_wcjy_yhhdcycs_delete_icon = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[4]/span[1]/i" jy_wcjy_yhhdcycs_mgyhzdcycs = "" jy_wcjy_yhhdcycs_mgyhzdcycs_text = u"每个用户最多参与次数" jy_wcjy_yhhdcycs_mgyhzdcycs_input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[4]/span[2]/div[1]/div/div/input" jy_wcjy_yhhdcycs_mgyhmrcycs = "" jy_wcjy_yhhdcycs_mgyhmrcycs_text = u"每个用户每日参与次数" jy_wcjy_yhhdcycs_mgyhmrcycs_input = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[2]/div[2]/div/div[3]/div/div[4]/span[2]/div[2]/div/div/input" # ---活动奖励---# jlxx = "" jlxx_text = u"活动奖励" jllx = "" jllx_text = u"奖励类型" jllx_select = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/div[1]/div/div/div[1]/div/span" jllx_select_gdjl_option = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/div[1]/div/div/div[2]/ul[2]/li" jllx_select_gdjl_option_text = u"固定奖励" # ---未添加奖励礼品时添加礼品---# w_jllp = "" w_jllp_text = u"奖励礼品" w_tjlp = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/div[2]/div/button" w_tjlp_text = u"添加礼品" # ---已添加奖励礼品时添加礼品---# y_jllp = "" y_jllp_text = u"奖励礼品" y_jllp_table = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/div[2]/div/div/div/div[2]/table/tbody" y_jllp_table_xh = "" y_jllp_table_xh_text = u"序号" y_jllp_table_mc = "" y_jllp_table_mc_text = u"名称" y_jllp_table_ffzt = "" y_jllp_table_ffzt_text = u"发放状态" y_jllp_table_ffzt_result_just_one = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/form/div[2]/div/div/div/div[2]/table/tbody/tr/td[4]/div/div/span" y_jllp_table_cz = "" y_jllp_table_cz_text = u"操作" y_jllp_table_cz_just_one_edit = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/form/div[2]/div/div/div/div[2]/table/tbody/tr/td[5]/div/div/a[2]" y_jllp_table_cz_just_one_detail = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[1]/div[3]/div[2]/div/form/div[2]/div/div/div/div[2]/table/tbody/tr/td[5]/div/div/a[1]" y_tjlp = "" y_tjlp_text = u"添加礼品" cancelbutton = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/span[1]" submitbutton = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/form/div[2]/span[2]"
def __init__(self): # self.driver = self.getChromeDriver() # self.driver = self.getIeDriver() self.driver = self.getFirefoxDriver() self.timeStr = GetTimeStr() #实例化
class ActiveWeb: def __init__(self): # self.driver = self.getChromeDriver() # self.driver = self.getIeDriver() self.driver = self.getFirefoxDriver() self.timeStr = GetTimeStr() #实例化 #使用火狐浏览器 def getFirefoxDriver(self): # binary = FirefoxBinary(r'D:\Program Files (x86)\Mozilla Firefox\firefox.exe') # firefoxdriver = webdriver.Firefox(firefox_binary=binary) fire_options = webdriver.FirefoxOptions() #为驱动加入无界面配置 fire_options.add_argument('--headless') #为驱动加入无界面配置 firefoxdriver = webdriver.Firefox() # firefoxdriver = webdriver.Firefox(firefox_options=fire_options) # 需要把驱动所在路径配置到系统环境变量里 firefoxdriver.maximize_window() #窗口最大化 return firefoxdriver #使用谷歌浏览器 def getChromeDriver(self): chrome_options = webdriver.ChromeOptions() #为驱动加入无界面配置 chrome_options.add_argument('--headless') #为驱动加入无界面配置 # chromedriver = webdriver.Chrome(chrome_options=chrome_options) # chromedriver = webdriver.Chrome() # 需要把驱动所在路径配置到系统环境变量里 path = r"%s/driver/chromedriver.exe" % str( os.path.dirname(os.path.dirname( os.path.abspath(__file__)))) #配置驱动路径 print("path:%s" % path) # path = r"D:\Users\Administrator\PycharmProjects\webtestdata\TestCaseFunction\driver\chromedriver.exe" #配置驱动路径 option = webdriver.ChromeOptions() option.add_argument( '--user-data-dir=C:\\Users\\Administrator\\Local\\Google\\Chrome\\User Data\\Default' ) # 设置成用户自己的数据目录 #浏览器输入chrome://version 下个人资料路径就是自己的数据目录 chromedriver = webdriver.Chrome(executable_path=path, chrome_options=option) chromedriver.maximize_window() #窗口最大化 self.delayTime(5) return chromedriver #使用IE浏览器 def getIeDriver(self): iedriver = webdriver.Ie() # 需要把驱动所在路径配置到系统环境变量里 return iedriver #使用Edge浏览器 def getEdgeDriver(self): edgedriver = webdriver.Edge() # 需要把驱动所在路径配置到系统环境变量里 return edgedriver #使用Opera浏览器 def getOperaDriver(self): operadriver = webdriver.Opera # 需要把驱动所在路径配置到系统环境变量里 return operadriver def outPutMyLog(self, context): mylog = UserLog(context) mylog.runMyLog() def outPutErrorMyLog(self, context): mylog = UserLog(context) mylog.runErrorLog() #打开网址 def getUrl(self, url): try: self.driver.get(url) self.outPutMyLog("进入网址:%s" % url) # print("进入网址:%s"% url) except Exception as e: self.getScreenshotAboutMySQL() # 截图关联django服务 self.outPutErrorMyLog("打开网页失败,关闭驱动.问题描述:[%s]" % e) self.closeBrowse() #获取当前页面的url def getNowPageUrl(self): NowPageUrl = self.driver.current_url self.outPutMyLog("当前页面的URL为:%s" % NowPageUrl) return NowPageUrl #通过xpath查找元素 def findElementByXpath(self, path): issecond = False try: ele = self.driver.find_element_by_xpath(path) self.outPutMyLog("找到Xpath为【%s】的元素" % path) self.driver.execute_script("arguments[0].scrollIntoView();", ele) # 拖动到可见的元素去,影响截取特定区域的截图,不影响整个页面截图 self.driver.execute_script( "arguments[0].setAttribute('style',arguments[1]);", ele, "background:green;border:2px solid red") #高亮显示操作的元素 #使用JavaScript代码将传入的页面元素对象的背景颜色和边框颜分别设置为绿色和红色 except Exception as e: self.outPutMyLog("问题描述:%s" % e) # print(e) self.getScreenshotNormal() self.delayTime(5) issecond = True if issecond: try: ele = self.driver.find_element_by_xpath(path) self.outPutMyLog("再次找到Xpath为【%s】的元素" % path) self.driver.execute_script( "arguments[0].scrollIntoView();", ele) # 拖动到可见的元素去,影响截取特定区域的截图,不影响整个页面截图 self.driver.execute_script( "arguments[0].setAttribute('style',arguments[1]);", ele, "background:green;border:2px solid red") # 高亮显示操作的元素 # 使用JavaScript代码将传入的页面元素对象的背景颜色和边框颜分别设置为绿色和红色 # print("最终找到元素") except Exception as e: self.printredword() self.getScreenshotAboutMySQL() #截图关联django服务 # self.getScreenshot() #截图不关联django服务 # self.outPutMyLog("停顿5秒后再次查找依然未找到元素.问题描述:%s"% e) self.outPutErrorMyLog("停顿5秒后再次查找依然未找到元素.问题描述:%s" % e) # print("停顿5秒后再次查找依然未找到元素,关闭驱动.问题描述:",e) self.printnormalword() # self.closeBrowse() return ele #获取控件截图 def getEleImage(self, num, path): ele = self.findElementByXpath(path) #获取元素控件 pageScreenshotpath = self.getScreenshotNormal() # 获取整个页面截图 # location = ele.location #获取验证码x,y轴坐标 #截取了BUSINESS location = ele.location_once_scrolled_into_view # 获取元素x,y轴坐标 #消除self.driver.execute_script("arguments[0].scrollIntoView();", ele) 对截图的影响 截取了login imgae size = ele.size #获取元素的长宽 coderange = (int(location['x']), int(location['y']), int(location['x'] + size['width']), int(location['y'] + size['height'])) #写成我们需要截取的位置坐标 pageScreenshot = Image.open(pageScreenshotpath) #打开截图 imageScreen = pageScreenshot.crop( coderange) #使用Image的crop函数,从截图中再次截取我们需要的区域,即验证码区域 tStr = self.getTimeStr() eleimage = "%s/imagefile/ele/%s_%s_ele.png" % (str( os.path.dirname(os.path.dirname( os.path.abspath(__file__)))), num, tStr) imageScreen.save(eleimage) #保存控件截图 self.outPutMyLog('获取到的元素的截图路径为:%s' % eleimage) # print('找到的ele的截图:', eleimage) return ele #通过xpath查找元素,然后返回元素的text内容 def findElementByXpathAndReturnText(self, num, path): ele = self.getEleImage(num, path) eletext = ele.text self.outPutMyLog("元素的Xpath路径为:%s;对应的文本信息为:%s" % (path, eletext)) self.delayTime(3) return eletext def findElementByXpathAndReturnTextNotNum(self, path): ele = self.findElementByXpath(path) eletext = ele.text self.outPutMyLog("元素的Xpath路径为:%s;对应的文本信息为:%s" % (path, eletext)) self.delayTime(3) return eletext #通过xpath查找元素,然后返回元素的标签名(例如input) def findElementByXpathAndReturnTagName(self, path): ele = self.findElementByXpath(path) eletext = ele.tag_name return eletext #通过xpath查找元素,然后返回元素的默认显示文字 def findElementByXpathAndReturnValue(self, path, valuename): ele = self.findElementByXpath(path) eletext = ele.get_attribute(valuename) return eletext #通过xpath查找元素,然后返回元素的默认显示文字 def findElementByXpathAndReturnValueNum(self, num, path, valuename): ele = self.getEleImage(num, path) eletext = ele.get_attribute(valuename) self.outPutMyLog("得到的元素属性【%s】的值为:%s" % (valuename, eletext)) return eletext #通过xpath查找元素,然后输入内容 def findElementByXpathAndInput(self, path, inputcontent): ele = self.findElementByXpath(path) ele.clear() #清除输入框内容 ele.send_keys(inputcontent) #输入内容 #通过xpath查找元素,然后输入内容 def findElementByXpathAndInputNum(self, num, path, inputcontent): ele = self.getEleImage(num, path) ele.clear() #清除输入框内容 ele.send_keys(inputcontent) #输入内容 # self.delayTime(3) displaytext = self.findElementByXpathAndReturnValueNum( num, path, 'value') self.outPutMyLog("输入内容:%s;显示内容:%s" % (inputcontent, displaytext)) # self.delayTime #通过xpath查找元素,然后情况输入框中的内容 def findElementByXpathAndDeleteInputContentNum(self, num, path): ele = self.getEleImage(num, path) displaytext = self.findElementByXpathAndReturnValueNum( num, path, 'value') ele.clear() #清除输入框内容 self.outPutMyLog("已经删除内容:%s." % displaytext) # self.delayTime(3000) #通过xpath查找元素,移除其Readonly属性然后输入内容 def findElementByXpathAndInputNumRemoveReadonly(self, num, path, inputcontent): ele = self.getEleImage(num, path) #移除Readonly属型 self.removeReadonly(ele) ele.clear() #清除输入框内容 ele.send_keys(inputcontent) #输入内容 # 设置Readonly属型为空 self.setReadonly(ele) # 点击使日期谈框消失 self.mockClickBlank(0, 0) displaytext = self.findElementByXpathAndReturnValueNum( num, path, 'value') self.outPutMyLog("输入内容:%s;显示内容:%s" % (inputcontent, displaytext)) # self.delayTime(3000) #通过xpath查找元素,使用JS直接设置Input框属性值(value=) def findElementByXpathAndInputNumJsSetValue(self, num, path, inputcontent): ele = self.getEleImage(num, path) self.jsSetValue(ele, inputcontent) displaytext = self.findElementByXpathAndReturnValueNum( num, path, 'value') self.outPutMyLog("输入内容:%s;显示内容:%s" % (inputcontent, displaytext)) # self.delayTime(3000) # 通过xpath查找元素,然后点击日期input框,点击选择日期路径 #日期控件路径path1,日期路径path2,日期左移月路径path3,日期右移月路径path4 def findElementByXpathAndClickAbountData(self, num, path1, path2, pathleft=None, pathright=None, pathconfirm=None): #点击日期input框 self.findElementByXpathAndClickNum(num, path1) if pathleft != None: #点击日期左移月按钮 self.findElementByXpathAndClickNum(num, pathleft) if pathright != None: #点击日期右移月按钮 self.findElementByXpathAndClickNum(num, pathright) #点击日期日路径 self.findElementByXpathAndClickNum(num, path2) if pathconfirm != None: self.findElementByXpathAndClickNum(num, pathconfirm) displaytext = self.findElementByXpathAndReturnValueNum( num, path1, 'value') self.outPutMyLog("日期显示内容:%s" % displaytext) self.mockClickBlank(0, 0) # 通过xpath查找元素,然后点击日期input框,点击选择日期路径,选择时分秒(预留) #日期控件路径path1,日期路径path2,分路径path3,日期左移月路径pathleft,日期右移月路径pathright def findElementByXpathAndClickAbountDataToSecound(self, num, path1, path2, path3, pathleft=None, pathright=None): #点击日期input框 self.findElementByXpathAndClickNum(num, path1) if pathleft != None: #点击日期左移月按钮 self.findElementByXpathAndClickNum(num, pathleft) if pathright != None: #点击日期右移月按钮 self.findElementByXpathAndClickNum(num, pathright) #点击日期日路径 self.findElementByXpathAndClickNum(num, path2) #点击日期时分秒路径 self.findElementByXpathAndClickNum(num, path3) displaytext = self.findElementByXpathAndReturnValueNum( num, path1, 'value') self.outPutMyLog("日期显示内容:%s" % displaytext) self.mockClickBlank(0, 0) #通过xpath查找元素,设置其Readonly属性值为空 def findElementByXpathAndInputNumSetReadonly(self, num, path): ele = self.getEleImage(num, path) self.setReadonly(ele) # self.delayTime(3000) #通过xpath查找元素,然后点击 def findElementByXpathAndClick(self, path): ele = self.findElementByXpath(path) ele.click() #点击 self.outPutMyLog("点击元素的Xpath路径为:%s" % path) # print("点击元素的Xpath路径为:%s" % path) self.delayTime(3) return ele #通过xpath查找元素,然后点击 def findElementByXpathAndClickNum(self, num, path): self.delayTime(1) ele = self.getEleImage(num, path) ele.click() #点击 self.outPutMyLog("点击Xpath路径为[%s]的元素" % path) # print("点击元素的Xpath路径为:%s" % path) self.delayTime(2) return ele #通过xpath查找元素,然后点击 def findElementByXpathAndScriptClick(self, path): ele = self.findElementByXpath(path) self.driver.execute_script("arguments[0].click();", ele) self.delayTime(3) return ele #通过xpath查找元素,然后点击 def findElementByXpathAndScriptClickNum(self, num, path): self.delayTime(1) ele = self.getEleImage(num, path) self.driver.execute_script("arguments[0].click();", ele) self.outPutMyLog("点击xpath为[%s]的元素" % path) self.delayTime(2) return ele #通过xpath查找到要输入文件的input元素,然后上传文件 def findElementByXpathAndAndFile(self, path, filepath): ele = self.findElementByXpath(path) try: ele.send_keys(filepath) self.delayTime(1) except Exception as e: self.printredword() self.outPutMyLog("上传文件失败,关闭驱动.问题描述:%s" % e) # print("上传文件失败,关闭驱动.问题描述:",e) self.printnormalword() self.closeBrowse() #通过xpath查找到要输入文件的input元素,然后上传文件 def findElementByXpathAndAndFileNum(self, num, path, filepath): ele = self.getEleImage(num, path) try: ele.send_keys(filepath) self.delayTime(1000) except Exception as e: self.printredword() self.outPutMyLog("上传文件失败,关闭驱动.问题描述:%s" % e) # print("上传文件失败,关闭驱动.问题描述:",e) self.printnormalword() self.closeBrowse() #通过xpath查找到要输入文件的input元素,然后上传文件 #pip install SendKeys #import win32gui #import win32con #import time def findElementByXpathAndAndFileNumVue(self, num, path, filepath): ele = self.findElementByXpathAndScriptClickNum(num, path) # ele = self.getEleImage(num,path) try: #pip install pywin32 #import win32gui # import win32con #文件名:D:\pic\1.jpg dialog = win32gui.FindWindow('#32770', '文件上传') # 对话框 ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄 button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 确定按钮Button win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, filepath) # 往输入框输入绝对地址 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 按button self.delayTime(5) except Exception as e: self.printredword() self.outPutMyLog("上传文件失败,关闭驱动.问题描述:%s" % e) # print("上传文件失败,关闭驱动.问题描述:",e) self.printnormalword() # self.delayTime(1000) self.closeBrowse() #通过xpath查找到select元素,然后点击,然后点击要选择的项 def findElementByXpathAndClickOptionXpath(self, xpath, optiontextxpath): try: self.findElementByXpathAndScriptClick(xpath) self.findElementByXpathAndScriptClick(optiontextxpath) self.delayTime(2) except Exception as e: self.printredword() self.outPutMyLog("出现问题,关闭驱动.问题描述:%s" % e) # print("出现问题,关闭驱动.问题描述:",e) self.printnormalword() self.closeBrowse() #通过xpath查找到select元素,然后点击,然后点击要选择的项 def findElementByXpathAndClickOptionXpathNum(self, num, xpath, optiontextxpath): try: self.findElementByXpathAndScriptClickNum(num, xpath) self.findElementByXpathAndScriptClickNum(num, optiontextxpath) self.delayTime(2) except Exception as e: self.printredword() self.outPutMyLog("出现问题,关闭驱动.问题描述:%s" % e) # print("出现问题,关闭驱动.问题描述:",e) self.printnormalword() self.closeBrowse() #通过xpath查找到select元素,选择要选择的项 def findElementByXpathAndReturnOptions(self, path, optiontext): ele = Select(self.findElementByXpath(path)) try: selectoption = ele.select_by_visible_text(optiontext) self.delayTime(2) except Exception as e: self.printredword() self.outPutMyLog("填写内容与选项内容对不上,关闭驱动.问题描述:%s" % e) # print("填写内容与选项内容对不上,关闭驱动.问题描述:",e) self.printnormalword() self.closeBrowse() #通过xpath查找到select元素,选择要选择的项 def findElementByXpathAndReturnOptionsNum(self, num, path, optiontext): ele = Select(self.getEleImage(num, path)) try: selectoption = ele.select_by_visible_text(optiontext) self.delayTime(2) except Exception as e: self.printredword() self.outPutMyLog("填写内容与选项内容对不上,关闭驱动.问题描述:%s" % e) # print("填写内容与选项内容对不上,关闭驱动.问题描述:",e) self.printnormalword() self.closeBrowse() #通过xpath查找到select并打印其所有的options def findElementByXpathAndReturnAllOptions(self, path): ele = Select(self.findElementByXpath(path)) optionlist = [] try: all_options = ele.options # print('所有选项内容如下:',all_options) for option in all_options: optionlist.append(option.text) # print('选项内容为:',option.text) self.outPutMyLog('获取的选项所有内容:%s' % optionlist) # print('获取的选项所有内容:',optionlist) return optionlist except Exception as e: self.printredword() self.outPutMyLog("获取选项内容出错,关闭驱动.问题描述%e" % e) # print("获取选项内容出错,关闭驱动.问题描述:",e) self.printnormalword() self.closeBrowse() #通过xpath查找到tbody并打印表格里所有内容 def findElementByXpathAndReturnTable(self, path): ele = self.findElementByXpath(path) # print('tagname:',ele.tag_name) tabledic = {} try: trlist = ele.find_elements_by_tag_name('tr') # print(len(trlist)) for i in range(0, len(trlist)): # print('第%s行内容如下:\n'% str(i+1)) #遍历行对象,并获取每一行中所有列对象 tdlist = trlist[i].find_elements_by_tag_name('td') collist = [] for j in range(0, len(tdlist)): #遍历表格中的列,并打印单元格内容 collist.append(tdlist[j].text) # print('第%s列内容如下:'% str(j+1),tdlist[j].text) tabledic[i + 1] = collist self.outPutMyLog('获取的表格内容:%s' % tabledic) # print('获取的表格内容:',tabledic) return tabledic # print('列表内容为:',option.text) except Exception as e: self.printredword() self.outPutErrorMyLog("获取表格内容出错,关闭驱动.问题描述:%s" % e) # print("获取表格内容出错,关闭驱动.问题描述:",e) self.printnormalword() self.closeBrowse() #通过xpath查找到tbody并打印表格里所有内容 def findElementByXpathAndReturnTableNum(self, num, path): ele = self.getEleImage(num, path) # ele = self.findElementByXpath(path) # print('tagname:',ele.tag_name) tabledic = {} try: trlist = ele.find_elements_by_tag_name('tr') # print(len(trlist)) for i in range(0, len(trlist)): # print('第%s行内容如下:\n'% str(i+1)) #遍历行对象,并获取每一行中所有列对象 tdlist = trlist[i].find_elements_by_tag_name('td') collist = [] for j in range(0, len(tdlist)): #遍历表格中的列,并打印单元格内容 collist.append(tdlist[j].text) # print('第%s列内容如下:'% str(j+1),tdlist[j].text) tabledic[i + 1] = collist self.outPutMyLog('获取的表格内容:%s' % tabledic) # print('获取的表格内容:',tabledic) return tabledic # print('列表内容为:',option.text) except Exception as e: self.printredword() self.outPutErrorMyLog("获取表格内容出错,关闭驱动.问题描述:%s" % e) # print("获取表格内容出错,关闭驱动.问题描述:",e) self.printnormalword() self.closeBrowse() def checktable(self, path, inputtext, colnum): tabledic = self.findElementByXpathAndReturnTable(path) for value in tabledic.values(): if inputtext.lower() in value[colnum].lower(): self.outPutMyLog('input输入内容变小写:%s' % inputtext.lower()) self.outPutMyLog('搜索到的表格内容变小写:%s' % value[colnum].lower()) # print('input输入内容变小写:',inputtext.lower()) # print('搜索到的表格内容变小写:',value[colnum].lower()) else: self.outPutMyLog("搜索到的内容不匹配!!!") # print("搜索到的内容不匹配!!!") #获取页面截图 def getScreenshot(self): driver = self.driver self.printredword() self.outPutMyLog("调用截取图片函数") # print("调用截取图片函数") tStr = self.getTimeStr() #获取当前时间串 currentny = self.getTimeStrNY() #获取当前时间的年月 # path = "../imagefile/%s.png"% tStr # path = '%s/screenshots/screenpicture_%s.png' % ( # str(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), tStr) firedir = r'%s/media/report/%s/screenshots/' % (os.path.dirname( os.path.dirname(os.path.dirname( os.path.abspath(__file__)))), currentny) self.createdir(firedir) path = '%s/screenpicture_%s.png' % (firedir, tStr) print(path) self.printnormalword() driver.get_screenshot_as_file(path) self.outPutMyLog("*****") # print("*****") self.outPutMyLog(path) # print(path) self.outPutMyLog("*****") # print("*****") return path #获取页面截图 def getScreenshotAboutMySQL(self): driver = self.driver self.printredword() self.outPutMyLog("调用截取图片函数") # print("调用截取图片函数") tStr = self.getTimeStr() #获取当前时间串 currentny = self.getTimeStrNY() #获取当前时间的年月 firedir = r'%s/media/report/%s/screenshots/' % (os.path.dirname( os.path.dirname(os.path.dirname( os.path.abspath(__file__)))), currentny) self.createdir(firedir) path = '%s/screenpicture_%s.png' % (firedir, tStr) pathaboutmysql = r'media\report\%s\screenshots\screenpicture_%s.png' % ( currentny, tStr) self.printnormalword() driver.get_screenshot_as_file(path) self.outPutMyLog("*****") # print("*****") self.outPutMyLog(pathaboutmysql) #打印截图路径,供报告截图使用 # print(path) self.outPutMyLog("*****") # print("*****") return path #获取页面截图 def getScreenshotNormal(self): driver = self.driver self.outPutMyLog("调用截取图片函数") # print("调用截取图片函数") tStr = self.getTimeStr() path = "%s/imagefile/%s.png" % (str( os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), tStr) driver.get_screenshot_as_file(path) return path #获取code码截图 def getCodeImage(self, path): pageScreenshotpath = self.getScreenshotNormal() # 获取整个页面截图 image = self.findElementByXpath(path) #获取图片验证码控件 # location = image.location #获取验证码x,y轴坐标 location = image.location_once_scrolled_into_view # 获取验证码x,y轴坐标 #消除self.driver.execute_script("arguments[0].scrollIntoView();", ele) 对截图的影响 size = image.size #获取验证码的长宽 coderange = (int(location['x']), int(location['y']), int(location['x'] + size['width']), int(location['y'] + size['height'])) #写成我们需要截取的位置坐标 pageScreenshot = Image.open(pageScreenshotpath) #打开截图 imageScreen = pageScreenshot.crop( coderange) #使用Image的crop函数,从截图中再次截取我们需要的区域,即验证码区域 tStr = self.getTimeStr() path = "%s/imagefile/%s_code.png" % (str( os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), tStr) imageScreen.save(path) #保存验证码图片 return tStr #获取验证码文字信息 def getcodetext(self, path): imagecodestr = self.getCodeImage(path) imagecode = Image.open( "%s/imagefile/%s_code.png" % (str(os.path.dirname(os.path.dirname( os.path.abspath(__file__)))), imagecodestr)) # 打开验证码图片 pixtongji = [] for x in range(imagecode.size[1]): for y in range(imagecode.size[0]): # 遍历图片的xy坐标像素点颜色 pix = imagecode.getpixel((y, x)) pixtongji.append(pix) nonepixtongjidic = {} for item in pixtongji: if item in nonepixtongjidic.keys(): nonepixtongjidic[item] += 1 else: nonepixtongjidic[item] = 1 self.outPutMyLog("nonepixtongjidic:%s" % nonepixtongjidic) # print("nonepixtongjidic:",nonepixtongjidic) nonepixtongjilist = sorted(nonepixtongjidic.values(), reverse=True) #按照键值对的值对字典进行倒序排序 numvalue = [] numvalue.append(nonepixtongjilist[1]) #获取第二个值 getkey = self.getDictKey(nonepixtongjidic, numvalue) img_new = Image.new('P', imagecode.size, 255) for x in range(imagecode.size[1]): for y in range(imagecode.size[0]): # 遍历图片的xy坐标像素点颜色 pix = imagecode.getpixel((y, x)) # print(pix) # 自己调色,r(pix[0])=0,g(pix[1])=0,b(pix[2])>0为蓝色 for i in range(len(getkey)): if (pix[0] == getkey[i][0] and pix[1] == getkey[i][1] and pix[2] == getkey[i][2]): # 把遍历的结果放到新图片上,0为透明度,不透明 img_new.putpixel((y, x), 0) newpath = "%s/imagefile/%s_codegary.png" % (str( os.path.dirname(os.path.dirname( os.path.abspath(__file__)))), imagecodestr) img_new.save(newpath, format='png') imagecode = Image.open(newpath) #打开验证码图片 imgry = imagecode.convert( 'L' ) # 图像加强,二值化,PIL中有九种不同模式。分别为1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。L为灰度图像 sharpness = ImageEnhance.Contrast(imgry) #对比度增强 imagecodegary = sharpness.enhance(2.0) #2.0为图像的饱和度 imagecodegary.save(newpath) #保存灰度值验证码 endcode = Image.open(newpath) #打开灰度值验证码 codetext = pytesseract.image_to_string(endcode).strip() #获取验证码文本文件 return codetext #获取字典对应值的键 def getDictKey(self, dict, prevalue): getkey = [] for key, value in dict.items(): for i in range(len(prevalue)): if value == prevalue[i]: getkey.append(key) return getkey #获取时间串 def getTimeStr(self): tStr = self.timeStr.getTimeStr() return tStr def getTimeStrNY(self): tStrNY = self.timeStr.getTimeStrNY() return tStrNY #获取cookies def getCookies(self): cookies = self.driver.get_cookies() for cookie in cookies: self.outPutMyLog("获取的cookie的值为:%s" % cookie) # print("获取的cookie的值为:%s" % cookie) return cookies #写入cookies def writerCookies(self, cookies, url, url2): self.outPutMyLog("\n开始写入cookie-----------------\n") # print("\n开始写入cookie-----------------\n") self.getUrl(url) long = len(cookies) for i in range(long): cookie = {'name': cookies[i]['name'], 'value': cookies[i]['value']} self.driver.add_cookie( cookie) #selenium添加cookies时,得先登录网址才能添加cookies的 self.outPutMyLog("写入cookie的值为:%s" % cookie) # print("写入cookie的值为:%s" % cookie) self.driver.refresh() # self.outPutMyLog("刷新当前页面---------") # print("刷新当前页面---------") self.getUrl(url2) self.outPutMyLog("url2为:%s." % url2) # print("url2为:%s."%url2) self.driver.refresh() #刷新当前页面 self.outPutMyLog("刷新当前页面---------") # print("刷新当前页面---------") self.delayTime(5000) #等待10秒 self.getCookies() #打印红色文字 def printredword(self): self.outPutMyLog('\033[1;31;0m') # print('\033[1;31;0m') #<!--1-高亮显示 31-前景色红色 47-背景色白色--> #打印默认文字 def printnormalword(self): self.outPutMyLog('\033[0m') # print('\033[0m') # <!--采用终端默认设置,即取消颜色设置--> #打印绿色文字 def printgreenword(self): self.outPutMyLog('\033[1;32;0m') print('\033[1;32;0m') # <!--1-高亮显示 32-前景色绿色 40-背景色黑色--> #延迟3秒 def delayTime(self, dalaytime): time.sleep(int(dalaytime)) #延迟, self.outPutMyLog("等待%s秒---" % dalaytime) # print("等待%s秒---"% dalaytime) #使用js去掉input框中的readonly(只读)属性,设置为可输入状态,主要处理日期输入 def removeReadonly(self, ele): self.driver.execute_script("arguments[0].removeAttribute('readonly')", ele) # 使用js去掉元素中的readonly属性 self.outPutMyLog("移除input元素中readonly属性,使其可编辑") def setReadonly(self, ele): self.driver.execute_script("arguments[0].setAttribute('readOnly','')", ele) # 使用js去掉元素中的readonly属性 self.outPutMyLog("设置input元素中readonly属性值为true,使其不可编辑") #用js方法输入日期 def jsSetValue(self, ele, value): self.driver.execute_script("arguments[0].value='%s'" % value, ele) # 使用js去掉元素中的readonly属性 self.outPutMyLog("设置input元素中value属性值为%s" % value) self.delayTime(1) #模拟鼠标点击空白处 def mockClickBlank(self, xoffset, yoffset): action = ActionChains(self.driver) action.move_by_offset(xoffset, yoffset).click().perform() #点击空白区域:坐标(0,0) self.outPutMyLog("模拟点击空白区域(点击坐标(%s,%s))" % (xoffset, yoffset)) self.delayTime(1) def createdir(self, filedir): filelist = filedir.split("/") # print(filelist) long = len(filelist) # print(long) zuhefiledir = filelist[0] for i in range(1, long): zuhefiledir = zuhefiledir + "/" + filelist[i] if os.path.exists(zuhefiledir): self.outPutMyLog("已经存在目录:%s" % zuhefiledir) else: os.mkdir(zuhefiledir) self.outPutMyLog("已经创建目录:%s" % zuhefiledir) #关闭浏览器 def closeBrowse(self): self.driver.quit()
def definecreateactivity(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 ISXIANGWANG: # if tfqdej == "0": # 点击投放渠道二级渠道所有项复选框 if not 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) # elif 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项复选框 else: if tfqdej == "0": # 点击投放渠道二级渠道所有项复选框 self.activeweb.findElementByXpathAndClickNum( num, self.testpage.tfqd_select_nbqd_fxk_mbmpay_checkbox) self.activeweb.findElementByXpathAndClickNum( num, self.testpage.tfqd_select_nbqd_fxk_mydisrupto_checkbox) self.activeweb.findElementByXpathAndClickNum( num, self.testpage.tfqd_select_nbqd_fxk_qrindo_checkbox) self.activeweb.findElementByXpathAndClickNum( num, self.testpage. tfqd_select_nbqd_fxk_qrindomerchantcashier_checkbox) self.activeweb.findElementByXpathAndClickNum( num, self.testpage.tfqd_select_nbqd_fxk_paysdk_checkbox) elif 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.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)
class MerchantContractPage: filename = "merchantid.txt" checkcontractmerchantid = GetTimeStr().readText(filename) if ISONLINE: pageurl = "%s/nereus/agent/v/#/merchant/contrat/%s" % (ONLINE_WEB_URL_TITLE,checkcontractmerchantid) else: pageurl = "%s/nereus/agent/v/#/merchant/contrat/%s" % (TEST_WEB_URL_TITLE, checkcontractmerchantid) #---Bank account---# bankaccount = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[1]/span" bankaccounttext = "Bank account" merchantname = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[1]/label" merchantnametext = "Merchant name:" merchantid = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[2]/label" merchantidtext = "Merchant ID:" settlement = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[3]/label" settlementtext = "Settlement:" bank = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[4]/label" banktext = "Bank:" accountname = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[5]/label" accountnametext = "Account name:" accountnumber = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[6]/label" accountnumbertext = "Account number:" merchantnamevalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[1]/div/div" merchantnamevaluetext = "test_individu_20190415152327" merchantidvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[2]/div/div" merchantidvaluetext = AGENT_CONTRAT_MERCHANID settlementswitch = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[3]/div/div/span" bankvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[4]/div/div" bankvaluetext = "BRI" accountnamevalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[5]/div/div" accountnamevaluetext = "test_individu" accountnumbervalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div[2]/div/form/div[6]/div/div" accountnumbervaluetext = "test_individu" #---MPF-offine collect---# mpfoffinecollect = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[1]/span" mpfoffinecollecttext = "MPF-offine collect" minimumidr = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[1]/label" minimumidrtext = "Minimum(IDR):" settlecycle = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[2]/label" settlecycletext = "Settlement cycle:" refundsetting = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[3]/label" refundsettingtext = "Refund setting:" mpfsettings = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[4]/label" mpfsettingstext = "MPF setting:" mpfladder = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[5]/label" mpfladdertext = "MPF ladder:" mpfladderfixed = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[5]/div/div/div/div[1]/table/thead/tr/th[1]/div/span" mpfladderfixedtext = "Fixed" mpfladderfeepercent = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[5]/div/div/div/div[1]/table/thead/tr/th[2]/div/span" mpfladderfeepercenttext = "Fee(%)" mpfladdefeeminimum = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[5]/div/div/div/div[1]/table/thead/tr/th[3]/div/span" mpfladdefeeminimumtext = "Fee minimum" minimumidrvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[1]/div/div" minimumidrvaluetext = "20,000" settlecyclevalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[2]/div/div" settlecyclevaluetext = "T+1" refundsettingvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[3]/div/div" refundsettingvaluetext = "All fees return" mpfsettingsvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[4]/div/div" mpfsettingsvaluetext = "base on transaction amount" mpfladderfixedvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[5]/div/div/div/div[2]/table/tbody/tr/td[1]/div/div/span" mpfladderfixedvaluetext = "0" mpfladderfeepercentvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[5]/div/div/div/div[2]/table/tbody/tr/td[2]/div/div/span" mpfladderfeepercentvaluetext = "0" mpfladdefeeminimumvalue = "/html/body/div[1]/div/div[2]/div[2]/div/div/div[1]/div/div/div[2]/div[2]/div/form/div[5]/div/div/div/div[2]/table/tbody/tr/td[3]/div/div/span" mpfladdefeeminimumvaluetext = "0"